具体原理性的东西就多说了,因为iPhoneX系列都一样,本文只说明一下具体怎么做,要适配屏幕,首先得让他以正确的姿势启动,如果你使用的是LaunchScreen.storyboard,就不需要考虑这个了,但如果你使用的是LaunchImag,就需要提供正确的启动图。需要注意的是XR使用的@2x的图。
启动图尺寸 ? ? ? 机型? ? ? ? ? ? ? ? ? 命名
640?×?960 ? ? ? iPhone4s? ? ? ? ? Default@2x
640?×?1136? ? ? iPhone5s? ? ? ? ? Default-568h@2x
750?×?1334? ? ? iPhone? ? ? ? ? ? ? Default-667h@2x
1242?×?2208? ? iPhonePlus ? ? ? Default-736h@3x
1125?×?2436? ? iPhoneX, XS? ? ? Default-812h@3x
828 x 1792? ? ? iPhoneXR? ? ? ? ? Default-828h@2x
1242 x 2688? ? iPhoneX Max? ? Default-1242h@3x
本文提到的这四款手机都有一个共同的特点,就是“齐刘海”+底部触摸条
针对这种样式的屏幕,我们处理方法是一样,几个宏直接搞定
怎么判断是不是iPhone X? 获取当前屏幕宽度或高度与尺寸进行比较就可以了
#define kNavBarHeight ? ? ? ? ? ? ?(iphoneX ? 88.0 : 64.0)
#define kBottomBarHeight ? ? ? ?(iphoneX ? 34.0 : 0)
#define kContentHeight ? ? ? ? ? ? (kScreenHeight - kNavBarHeight-kBottomBarHeight)
针对继承自UIScrollView的,需要处理一下内边距
第一步:关闭自动调整内边距
if (@available(iOS 11.0, *)) {
[UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
第二步:在使用的地方手动设置内边距(千万别全局设置,容易出事)
self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, kBottomBarHeight, 0);
这样设置以后,底下的触摸区域就能正常显示内容了,而且当UIScrollView滑到最底部的时候,不会被遮住。
除此之外,有些比较大的控件,产品会要求按照屏幕比例进行调整,小屏幕的显示的小一点,大屏幕的显示大一点,这个也是两个宏搞定
#define kScaleH ? ? ? ? ? ? ? ? ??(kScreenHeight/667.0)
#define kScaleW ? ? ? ? ? ? ? ? ?(kScreenWidth/375.0)