当iPhone是风景时,viewController的宽度是320px

时间:2011-03-28 18:12:48

标签: iphone

我有一个viewController,我有

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

为什么我在它的viewDidLoad上读取w和h为320和480的宽度和高度,而不是480和320,当iPhone是风景时? (见下文)

- (void) viewDidLoad {
CGFloat w = self.view.bounds.size.width; // 320???
CGFloat h = self.view.bounds.size.height; // 480 ??
}

我错过了什么?

感谢。

3 个答案:

答案 0 :(得分:2)

您是否尝试获取 viewDidAppear 中的值?使用viewDidLoad,视图实际上没有呈现,因此它可能仍处于纵向状态。

答案 1 :(得分:2)

小心,你可能已经遇到了平台上最着名的bug:

iPhone app in landscape mode, 2008 systems

这是一个吸引了很多人的错误。 请注意,在该问题上,其中一个回复有22票 - 该回复实际上完全是100%错误。

这显示了对这个问题的一些困惑。

请务必查看那里的所有内容以及所有链接,例如:

“这里有一个重要的提醒:这里有一个众所周知的问题:如果你试图在多于一个视图(所有景观)之间进行交换,那么IT简单就行不通了。记住这一点至关重要,否则你会浪费关于问题的几天。它实际上是不可能的。它是iOS平台上最大的开放,已知的错误。“

答案 2 :(得分:1)

我一直有这个问题......

认为所有视图必须以纵向模式呈现,然后切换到横向。它是一个婊子,但管理这个的最好方法是在所有子视图上使用UIViewAutoreizingMasks,这样他们就可以按照你想要的方式进行布局。