iPhone X系列适配
iPhone尺寸
iPhone尺寸 iPhone尺寸iPhone X系列都有一个共同的特点,就是“齐刘海”+底部触摸条
针对这种样式的屏幕,我们处理方法是一样,几个宏直接搞定
宏定义获取当前屏幕宽度或高度进行比较来判断是不是iPhone X
#define Is_iPhoneX ((kScreenHeight >= 812.f) ? YES : NO)
// iPhone X Tabbar底部安全区
#define BottomSafeAreaHeight (Is_iPhoneX ? 34.f : 0.f)
// iPhone X 导航栏+状态条
#define NavigationBarHeight (Is_iPhoneX ? 88.f : 64.f)
// 状态条高度
#define StatusBarHeight (Is_iPhoneX ? 44.f : 20.f)
针对继承自UIScrollView的,需要关闭自动调整内边距。在iOS11之前,系统会通过动态调整UIScrollView的contentInset属性来实现视图内容的偏移,但是在iOS11中,系
统不再调整UIScrollView的contentInset,而是通过contentInsetAdjustmentBehavior和adjustedContentInset来
配合完成。
if (@available(iOS 11.0, *)) {
[UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
在使用的地方手动设置内边距,底下的触摸区域就能正常显示内容了,而且当UIScrollView滑到最底部的时候,不会被遮住。
self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, BottomSafeAreaHeight, 0);
在需要用屏幕比例进行调整的UI,定义两个宏
#define kRatioWidth (kScreenWidth / 375.0)
#define kRatioHeight (Is_iPhoneX ? 1.0 : (kScreenHeight / 667.0))
(设计图是按照iPhone 6的尺寸设计的,比例用667、375,如果是按照iPhone 5s尺寸设计的,比例用568、320)