iPhone刘海屏适配
iPhone XR正式售卖,屏幕黑框堪比那个温暖潮湿的地方,瞬间失去了购买欲。
目前为止,苹果一共生产了4款刘海屏手机,iPhone X,iPhone XS, iPhone XS Max和iPhone XR。如何适配网上也有很多方案,最常见的方案就是匹配手机屏幕尺寸。众所周知,苹果和三星是两家冷兵器制造商,一家做剑,一家做盾,剑越来越长,盾越来越宽。因此在今年3款新机出现后,根据屏幕尺寸判断的方法也就失效了。
另一种比较常见的方法,是直接判断当前机器型号,是iPhoneX的情况下设置边距,但每一次发布新手机,都要追加判定条件。
其实苹果准备好了一个方法,系统判定当前边距,不过只在iOS11及以后开始生效。
- (void)viewSafeAreaInsetsDidChange NS_REQUIRES_SUPER API_AVAILABLE(ios(11.0), tvos(11.0));
这时候再使用Xcode 9推出的API@available即可。
@available(版本,平台)
- (void)viewSafeAreaInsetsDidChange {
[super viewSafeAreaInsetsDidChange];
// safeArea边距
CGFloat safeTop = 0;
CGFloat safeBottom = 0;
CGFloat safeLeft = 0;
CGFloat safeRight = 0;
// iOS11 中,获取边距
if (@available(iOS 11.0, *)) {
safeTop = self.view.safeAreaInsets.top;
safeBottom = self.view.safeAreaInsets.bottom;
safeLeft = self.view.safeAreaInsets.left;
safeRight = self.view.safeAreaInsets.right;
}
NSLog(@"%f---%f---%f---%f",safeTop,safeBottom,safeLeft,safeRight);
}
另外一种刘海屏处理方法
static inline BOOL isIPhoneXSeries() {
if (@available(iOS 11.0, *)) {
UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
if (mainWindow.safeAreaInsets.bottom > 0.0) {
return YES;
}
}
return NO;
}