Zhu*_*ukV 4 iphone objective-c ios ios7 ios8
我为部署目标> = 7.1创建应用程序.我看到了"bug"......应用程序只在横向模式下运行!
码:
CGSize frameSize = [[UIScreen mainScreen] bounds].size;
Run Code Online (Sandbox Code Playgroud)
在iOS 7(iPhone 4)中,返回CGSize (width=320, height=480),但必须返回480x320(因为在横向模式下运行应用程序).在iOS 8(iPhone 4S)中,返回CGSize (width=480, height=320)- 正确的结果.
iOS 7在没有检查横向/纵向模式的情况下返回帧的印象,以及纵向模式的返回尺寸.
谢谢.
iOS 8中的行为已更改.
引用UIScreen文档
在iOS 8之前,屏幕边界矩形始终反映相对于纵向向上的屏幕尺寸.将设备旋转到横向或倒置方向不会改变边界.在iOS 8及更高版本中,屏幕的边界属性会考虑屏幕的界面方向.此行为意味着纵向设备的边界可能与横向设备的边界不同.依赖于屏幕尺寸的应用程序可以将fixedCoordinateSpace属性中的对象用作它们必须进行的任何计算的固定参考点.
是的iOS 8的API有变化.
是的,它在iOS8中取决于方向,而不是bug.您可以从WWDC 2014查看会话214以获取更多信息:" 在iOS 8中查看控制器进度 "
从演示文稿中引用:
UIScreen现在面向接口:
[UIScreen bounds] now interface-oriented
[UIScreen applicationFrame] now interface-oriented
Status bar frame notifications are interface-oriented
Keyboard frame notifications are interface-oriented
Run Code Online (Sandbox Code Playgroud)
可能重复的问题:[UIScreen mainScreen] .bounds.size在iOS8中是否依赖于方向?
要实现您的目标,请检查iOS版本并相应地运行代码:
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |