在viewDidAppear中设置UIView帧,解决iPad中用于启动定向模式的帧问题横向

问题描述:

我在横向模式下启动我的应用程序(iPhone和iPand)。在viewDidAppear中设置UIView帧,解决iPad中用于启动定向模式的帧问题横向

我viewDidAppear发现为iPad帧改变该帧在,比viewWillAppear中一个在


IOS IPAD 5.1模拟器

在viewWillAppear中它是0.000000 20.000000 768.000000 1004.000000。

同时,在viewDidAppear它是0.000000 0.000000 748.000000 1024.000000


IOS IPAD 6.0模拟器 [但IOS相当supprised 6的ipad模拟器]

在viewWillAppear中它是0.000000 0.000000 748.000000 1024.000000

while,viewDidAppear与viewWillAppear相同。


所以,我可以设置框架为我viewDidAppear子视图?因为这里是完美的框架。

对于iPhone的结果是相同的方法20.000000 0.000000 300.000000 480.000000。

为什么会出现在的iPadiPhone不同的行为?

Info.plist具有左侧和右侧风景的“支持的接口方向”,“初始接口方向”设置为landscapeLeft。

AppLaunch方法如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

     self.viewController=[[ViewController alloc] init]; 

     self.window.rootViewController = self.viewController; 
} 

ViewController.m有以下几种方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if(UIInterfaceOrientationIsLandscape(interfaceOrientation)){ 
     return YES; 
    } 
    return NO; 
} 

Please Find the project at this link

+1

对我来说这似乎是一个有效的问题。如果投票人进行了一些推理,那将会很好。你有一个明确的问题,但几乎没有你的代码,所以我们不知道你给我们的代码是用于iPad,iPhone还是两者,或者你的代码或IB文件中的问题。您是在任何地方手动设置框架,还是所有在XIB /故事板中处理的布局? – DBD

+0

@DBD对你的问题很有帮助。我已经上传了该项目,请在该问题中找到链接。 – andyPaul

我可以设置帧我在viewDidAppear子视图?

您可以在任何需要的位置设置框架。你为什么不能?

+0

同时检查问题中提到的iPhone和iPad中帧的不同行为,其中我提到帧坐标 – andyPaul

+0

@andyPaul啊是的!好吧,我想这与操作系统(更确切地说是UIKit)的差异有关。 – 2012-09-09 11:14:31

+0

我正在努力解决横向模式下的帧问题。我提到了Apple Doc,它说你可以改造,但即使这样也行不通。然后我发现了这个我不清楚的解决方案,并且你拒绝了。请详细解释一下在什么时候设置viewWillAppear和viewDidAppear。 – andyPaul