我有一个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 ??
}
我错过了什么?
感谢。
答案 0 :(得分:2)
您是否尝试获取 viewDidAppear 中的值?使用viewDidLoad,视图实际上没有呈现,因此它可能仍处于纵向状态。
答案 1 :(得分:2)
小心,你可能已经遇到了平台上最着名的bug:
iPhone app in landscape mode, 2008 systems
这是一个吸引了很多人的错误。 请注意,在该问题上,其中一个回复有22票 - 该回复实际上完全是100%错误。
这显示了对这个问题的一些困惑。
请务必查看那里的所有内容以及所有链接,例如:
“这里有一个重要的提醒:这里有一个众所周知的问题:如果你试图在多于一个视图(所有景观)之间进行交换,那么IT简单就行不通了。记住这一点至关重要,否则你会浪费关于问题的几天。它实际上是不可能的。它是iOS平台上最大的开放,已知的错误。“
答案 2 :(得分:1)
我一直有这个问题......
我认为所有视图必须以纵向模式呈现,然后切换到横向。它是一个婊子,但管理这个的最好方法是在所有子视图上使用UIViewAutoreizingMasks,这样他们就可以按照你想要的方式进行布局。