Xcode9出现错误safe area layout guide before ios 9 真正解决办法
网上有种广为流传的错解是不勾选Use Safe Area Layout Guides,如下图灰框,会导致用不了iOS的这个新功能了,正解是选中控制器,右边面板的Builds for 选择iOS11.0 and Later,如下图红框
适配UITableView
if #available(iOS11.0, *) {
self.contentInsetAdjustmentBehavior= .never
self.estimatedRowHeight=0
self.estimatedSectionHeaderHeight=0
self.estimatedSectionFooterHeight=0
}else{
}
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。
方法二:实现tableView的头部和尾部代理方法也可以
适配UIScrollView
if #available(iOS11.0, *) {
scrollView?.contentInsetAdjustmentBehavior= .never
}else{
}
适配网页加载不全下面有白边
if #available(iOS11.0, *) {
webView.scrollView.contentInsetAdjustmentBehavior= .never
}else{
}
XCode9 拖入文件 不自动添加 compile sources
XCode9拖入第三方库不能自动编译,会导致类似,错误提示如下:
OBJC_CLASS$_UnityAppController", referenced from: objc-class-ref in AppDelegate.o
这是xcode9的Bug,可以先用xcode8.3导入后然后在用xcode9打开。不过xcode9.1已经修复这个Bug了。
适配iPhoneX的宏
let 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)
iPhoneX适配问题可以参考1.http://blog.csdn.net/HDFQQ188816190/article/details/78050242?locationNum=3&fps=1
App界面适配iOS11 http://www.jianshu.com/p/352f101d6df1
xcode9打包注意事项
xcode9打包版本只能是8.2及以下版本,或者9.0及更高版本
xcode9不支持8.3和8.4版本
xcode9新打包要在构建版本的时候加入1024*1024 AppSore icon和1125px × 2436px (375pt × 812pt @3x)启动图
官方启动图和AppSore icon的demo《Application Icons and Launch Images for iOS》