由于我做的这个项目相对来说比较简单,所以需要更改的地方只有两个地方,以下就是我的更改部分。
- 先提一下后面我要用到的宏
// 判断是否是iOS11
#define kVersion_IOS11 ([UIDevice currentDevice].systemVersion.floatValue >= 11.0)
// 判断是否是iPhoneX
#define kIPHONE_TYPE_X (kScreenBounds.size.height == 812.0)
先来看看不做iPhoneX适配的图


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的模拟器真帅,嘎嘎嘎。
网友评论