iOS11&iPhoneX适配&Xcode9打包注意事项
Posted gallon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS11&iPhoneX适配&Xcode9打包注意事项相关的知识,希望对你有一定的参考价值。
转自:
http://blog.csdn.net/smile_po/article/details/78341685
http://blog.csdn.net/sodaslay/article/details/78191227
一 升级ios11适配
1.1,适配UITableView
if#available(iOS11.0, *) {
self.contentInsetAdjustmentBehavior= .never
self.estimatedRowHeight=0
self.estimatedSectionHeaderHeight=0
self.estimatedSectionFooterHeight=0
}else{
}
1.2,适配UIScrollView
if#available(iOS11.0, *) {
scrollView?.contentInsetAdjustmentBehavior= .never
}else{
}
1.3,UITableView中的sectionHeader或者Footer显示不正常
还有的发现某些界面tableView的sectionHeader、sectionFooter高度与设置不符的问题,在iOS11中如果不实现-tableView: viewForHeaderInSection:和-tableView: viewForFooterInSection:,则-tableView: heightForHeaderInSection:和- tableView: heightForFooterInSection:不会被调用,导致它们都变成了默认高度,这是因为tableView在iOS11默认使用Self-Sizing,tableView的estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension,解决办法简单粗暴,就是实现对应方法或把这三个属性设为0。
1.4,适配网页加载不全下面有白边
if#available(iOS11.0, *) {
webView.scrollView.contentInsetAdjustmentBehavior= .never
}else{
}
1.5 如果使用了Masonry 进行布局,就要适配safeArea
if ([UIDevice currentDevice].systemVersion.floatValue >= 11.0) {
make.edges.equalTo(self.view.safeAreaInsets);
} else {
make.edges.equalTo(self.view);
}
二 iphoneX适配
2.1 适配iPhoneX不能铺满屏的问题
方案一:给Brand Assets添加一张1125*2436大小的图片,打开Assets.xcassets文件夹,找到Brand Assets,右键Show in Finder,添加一张1125*2436大小的图片。
方案二:修改Contents.json文件,添加如下内容
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "2436h",
"filename" : "1125_2436.png”,
"minimum-system-version" : "11.0",
"orientation" : "portrait",
"scale" : "3x"
}
2.2 适配iphoneX
//适配iPhoneX
let LL_iPhoneX = (kScreenW == Double(375.0) && kScreenH == Double(812.0) ?true:false)
let kNavibarH = LL_iPhoneX ? Double(88.0) : Double(64.0)
let kTabbarH = LL_iPhoneX ? Double(49.0+34.0) : Double(49.0)
let kStatusbarH = LL_iPhoneX ? Double(44.0) : Double(20.0)
2.3 设备信息
if ([deviceString isEqualToString:@"iPhone10,1"]) return @"iPhone 8";
if ([deviceString isEqualToString:@"iPhone10,4"]) return @"iPhone 8";
if ([deviceString isEqualToString:@"iPhone10,2"]) return @"iPhone 8 Plus";
if ([deviceString isEqualToString:@"iPhone10,5"]) return @"iPhone 8 Plus";
if ([deviceString isEqualToString:@"iPhone10,3"]) return @"iPhone X";
if ([deviceString isEqualToString:@"iPhone10,6"]) return @"iPhone X";
三 Xcode9打包
xcode9打包版本只能是8.2及以下版本,或者9.0及更高版本
以上是关于iOS11&iPhoneX适配&Xcode9打包注意事项的主要内容,如果未能解决你的问题,请参考以下文章
iOS11 与 iPhone X适配的那些坑(持更中...)
混合式App开发 Apicloud 官方iPhone X 适配
iOS 11 和 iPhone X:UINavigationBar 的工具栏间距在嵌入到 UITabBarController 时不正确