【发布时间】:2011-11-20 18:31:43
【问题描述】:
我正在制作一个仅支持 iOS 设备横向模式的应用。所以我将它设置为仅在shouldAutorotateToInterfaceOrientation: 中为UIInterfaceOrientationLandscapeRight 和UIInterfaceOrientationLandscapeLeft 返回YES,并将Info.plist 中的初始方向设置为UIInterfaceOrientationLandscapeRight。应用显示正常。
问题是在视图加载完成之前坐标系不是横向的(我不确定这里何时正确应用)。我所知道的是,它在启动时调用:shouldAutorotateToInterfaceOrientation 时会更改为正确的坐标空间。问题是当viewDidLoad 和initWithCoder: 都被调用时,它位于错误的坐标空间中,在shouldAutorotate... 之前。
我的意思是,如果我使用CGRectMake(0, 0, 480, 320)(而不是使用 self.view.frame 或其他东西)将视图设置为屏幕的整个宽度,那么当坐标空间被旋转“校正”时,它就会被破坏。 viewDidLoad 中创建的视图应用了旋转,因此它们是错误的。这使得在这些方法中设置视图很痛苦,而且非常不合逻辑。我猜这是如何处理方向的问题。为什么它会这样?我已经以各种可能的方式告诉它我只想要横向位置。这可以是界面生成器和属性的东西吗?
这是使用标准的UIViewController。然而,新视图也是从viewDidLoad 中的 .xib 文件加载的。会不会是这个问题?
【问题讨论】:
标签: ios objective-c cocoa-touch orientation