我正在制作一个仅支持iOS设备横向模式的应用程序。因此,我已将其设置为仅在shouldAutorotateToInterfaceOrientation:
中为UIInterfaceOrientationLandscapeRight
和UIInterfaceOrientationLandscapeLeft
返回YES,并将Info.plist
中的初始方向设置为UIInterfaceOrientationLandscapeRight
。该应用程序显示正常。为什么ViewController的初始方向不是风景的时候应该是?
问题是,直到视图完成加载后,坐标系才会处于横向状态(当我正确应用时,我不太确定)。我知道的是,它在启动时调用:shouldAutorotateToInterfaceOrientation
时会更改为正确的坐标空间。问题是当viewDidLoad
和initWithCoder:
被调用时,它在错误的坐标空间中,在shouldAutorotate...
之前。
我的意思是,如果我用CGRectMake(0, 0, 480, 320)
(而不是使用self.view.frame或其他东西)设置视图的全屏宽度,当坐标空间旋转“更正”时,它会显示为borked。在viewDidLoad
创建的视图有一个旋转适用于他们,所以他们是错的。这使得在这些方法中设置观点是一种痛苦,而且确实不合逻辑。我猜测这是如何处理方向的问题。为什么它的行为如此?我已尽可能地告诉它我只想要景观位置。这可以用界面生成器和属性吗?
这是使用标准的UIViewController
。然而,新视图也从viewDidLoad
中的.xib文件中加载。这可能是问题吗?
谢谢!这非常有帮助。伟大的经验法则。 – ErikPerik