Eri*_*off 3 cocoa-touch objective-c orientation ios
我正在制作一个仅支持iOS设备横向模式的应用.因此我将其设置为仅返回YES UIInterfaceOrientationLandscapeRight和UIInterfaceOrientationLandscapeLeftin shouldAutorotateToInterfaceOrientation:并将初始方向设置Info.plist为UIInterfaceOrientationLandscapeRight.该应用程序显示正常.
问题是在视图完成加载之前坐标系不是横向的(我在这里正确应用它时并不是特别确定).我所知道的是,它在调用时会更改为正确的坐标空间:shouldAutorotateToInterfaceOrientation启动时.问题是,当两个viewDidLoad和initWithCoder:被称为是在错误的坐标空间,之前shouldAutorotate....
我的意思是,如果我将视图设置为屏幕的整个宽度CGRectMake(0, 0, 480, 320)(而不是使用self.view.frame或其他东西),当坐标空间旋转"校正"时,它会被borked.创建的视图viewDidLoad应用了旋转,因此它们是错误的.这使得在这些方法中设置视图既痛苦又非常不合逻辑.我猜这是一个如何处理方向的问题.为什么它会像这样?我已经尽可能地告诉它我只想要风景位置.这可以是Interface构建器和属性吗?
这是使用标准UIViewController.但是,新视图也是从.xib文件中加载的viewDidLoad.这可能是问题吗?
支持方向更改是所有 iOS开发人员在某个时刻都在努力解决的问题.它经常令人困惑和沮丧.这是一个经验法则,它将处理所有方向问题的95%:
与方向相关的界面更改(例如帧大小调整)直到发生才会发生
viewWillAppear:.在此之前,即使您只在应用中支持横向或您的应用已处于横向模式,您的视图也将处于纵向模式.
自从viewDidLoad:发生之前viewWillAppear:,尚未发生方向布局更改.因此,执行以下任何操作viewDidLoad通常会产生不稳定的结果(取决于视图的autoResize设置方式):
| 归档时间: |
|
| 查看次数: |
2684 次 |
| 最近记录: |