美文网首页iOS学习开发iOS学习整理
iOS怎么获取屏幕尺寸?

iOS怎么获取屏幕尺寸?

作者: 梦晨ing | 来源:发表于2018-11-21 20:23 被阅读12次

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

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

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

    iPhone所有屏幕尺寸和分辨率

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

    • 6Plus上开启了“显示放大”模式;
    • 启动图中没有正确加入该类型的启动图。比如:iPhone xr的设备,没有配置启动图,就获取不到正确的屏幕尺寸。

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

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

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

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

    • 打开launchImage里的ios8.0 and later
    • 添加iPhone XS Max 和iPhone XR的启动图

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

    相关文章

      网友评论

        本文标题:iOS怎么获取屏幕尺寸?

        本文链接:https://www.haomeiwen.com/subject/ibchqqtx.html