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;

}

你可能感兴趣的:(iPhone刘海屏适配)