iOS学习开发iOS学习整理

iOS怎么获取屏幕尺寸?

2018-11-21  本文已影响12人  梦晨ing

使用[UIScreen mainScreen].bounds就够了吗

获取屏幕的宽高,觉得就这么一行简单的代码[UIScreen mainScreen].bounds,就可以读取出屏幕的宽高(点)。这有问题吗?没有问题呀,但是为啥我获取到的值,跟实际的屏幕尺寸不匹配呢?在项目中,开始是6Plus的尺寸一直获取不正确,后面又发现iPhone XR和iPhone X MAX的尺寸也不正确。

下图是所有iPhone设备的屏幕尺寸列表:

iPhone所有屏幕尺寸和分辨率

到处查找原因,发现光会使用这句代码还不够,这句代码获取到的值还会受下面两种情况的影响。

但是为什么启动图没加,这个问题没有被发现呢。首先我是知道启动图不添加,不会正确初始化屏幕的尺寸这个问题,我在查找问题的时候也去看了LaunchImage里的启动图,可是为什么没发现xr和x max的启动没有添加呢,巨坑来了:

Xcode9升级到xcode10时, LaunchImage 上iOS8 and later被默认去掉打钩了,所以咋一看LaunchImage里所有空位的地方都放了启动图了。

这个问题就变为了iPhone XR和X Max的适配不彻底导致,这里具体怎么适配,可以参考这边文章:
适配iPhone XR/iPhone XS Max

因此正确获取iPhone XR和X Max的解决方案是:

不过由于现在Xcode10.1了也还没有解决,Xcode10打的包上线后在iOS9.3的设备上,出现大面积随机的crash的问题。要么解决打包的问题,要么像我们选择暂时还是用Xcode9打包上线。所以目前等待苹果赶紧修复这个问题。

上一篇下一篇

猜你喜欢

热点阅读