美文网首页
iOS 11 及 iPhone X的适配

iOS 11 及 iPhone X的适配

作者: 红袖吾狗 | 来源:发表于2017-09-28 18:24 被阅读24次

由于我做的这个项目相对来说比较简单,所以需要更改的地方只有两个地方,以下就是我的更改部分。

  • 先提一下后面我要用到的宏
// 判断是否是iOS11
#define kVersion_IOS11  ([UIDevice currentDevice].systemVersion.floatValue >= 11.0)
// 判断是否是iPhoneX
#define kIPHONE_TYPE_X    (kScreenBounds.size.height == 812.0)

先来看看不做iPhoneX适配的图

img_0.png img_1.png

img_0图看上去十分变扭,都快和刘海碰到了。解决的办法是用iOS11新增的API@property (nonatomic,readonly) UIEdgeInsets safeAreaInsets API_AVAILABLE(ios(11.0),tvos(11.0));具体也可以参考这篇文章:
https://mp.weixin.qq.com/s?__biz=MzUxODI3MjY2Ng==&mid=2247483816&idx=1&sn=c3fe3a5c5761fb55a69a008a08fef9aa&chksm=f98a225dcefdab4b42d9778b09c4d5b587094a4209c48171901e04e570477c8bed5bf61106ce&mpshare=1&scene=23&srcid=0920XPZzBwLPNHV94w7XwW9s#rd

以下是我在自定义的导航栏中的写法,可供大家参考:

       if (kVersion_IOS11 && kIPHONE_TYPE_X) { // 此处是为了去除警告的做法
            if (@available(iOS 11.0, *)) {
                make.height.equalTo(@(self.safeAreaInsets.top + 44));
            } else {
                make.height.equalTo(@64);
            }
        } else {
            make.height.equalTo(@64);
        }

再来看img_1,这个图咋看上去没什么异常,但是我是设置headerSection 的高度为0.01的,到了iOS11系统的机子上跑多了一个快空白,解决办法是加入一下代码即可:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return nil;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return nil;
}

以上就是我碰到的问题,希望对大家有所帮助。

最后,我想说的是,Xcode9的模拟器真帅,嘎嘎嘎。

相关文章

网友评论

      本文标题:iOS 11 及 iPhone X的适配

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