1. iPhone X tabbar 高度为 83 ,其余机型为49; 导航栏+状态高度为 88,其余为64
官方适配标准如下图:
2. UITableview 顶部出现留白
解决方法: 添加以下代码
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return nil
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return nil
}
3. iOS 11 弃用 automaticAdjustsScrollViewInsets 新增 contentInsetAdjustmentBehavior
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
4. Xcode9向UIapplication 报告主线程调用 :[UIApplication statusBarOrientation]
Main Thread Checker: UI API called on a background thread: -[UIApplication statusBarOrientation]
PID: 22810, TID: 466328, Thread name: (none), Queue name: WriteLogQueue, QoS: 0
Backtrace:
4 Numerology 0x0000000107a99468 -[SSDKContext screenResolution] + 88
5 Numerology 0x0000000107aae942 +[SSDKLog encryptDeviceString] + 390
6 Numerology 0x0000000107aa6900 __28-[SSDKRunLog getLogContent:]_block_invoke + 59
7 Numerology 0x0000000107aae769 -[SSDKLog getLogContent:] + 654
8 Numerology 0x0000000107aa68a6 -[SSDKRunLog getLogContent:] + 127
9 Numerology 0x0000000107ac9523 __28-[SSDKLogService sendRunLog]_block_invoke + 138
10 libdispatch.dylib 0x00000001115df3f7 _dispatch_call_block_and_release + 12
11 libdispatch.dylib 0x00000001115e043c _dispatch_client_callout + 8
12 libdispatch.dylib 0x00000001115e895b _dispatch_queue_serial_drain + 1162
13 libdispatch.dylib 0x00000001115e92df _dispatch_queue_invoke + 336
14 libdispatch.dylib 0x00000001115e507d _dispatch_queue_override_invoke + 733
15 libdispatch.dylib 0x00000001115ec1f9 _dispatch_root_queue_drain + 772
16 libdispatch.dylib 0x00000001115ebe97 _dispatch_worker_thread3 + 132
17 libsystem_pthread.dylib 0x0000000111a9c5a2 _pthread_wqthread + 1299
18 libsystem_pthread.dylib 0x0000000111a9c07d start_wqthread + 13
解决方法: 取消勾选部分
5. 关于嵌套tableview后,刷新列表,导致列表向上偏移的问题
原因: iOS 8 引入了Self-Sizing后,我们可以通过estimatedRowHeight来估算每个cell的高度。iOS11 Self-Sizing 默认开启,estimatedRowHeight会由之前的 0 改变为UITableViewAutomaticDimension, 之前项目中,没有使用estimatedRowHeight,在刷新列表的时候,会重新计算 contentSize,进而影响到contentOffSet
解决方法:
tableView.estimatedRowHeight = 0.0
tableView.estimatedSectionFooterHeight = 0.0
tableView.estimatedSectionHeaderHeight = 0.0
6. 关于iOS 11 新特性: 大标题prefersLargeTitles
显示大标题
navigationController.navigationBar.prefersLargeTitles = true
修改大标题颜色,字号等
navigationController.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.orange,
NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]
大标题显示样式
navigationItem.largeTitleDisplayMode = .automatic
此处说明一下显示样式,默认显示样式为automatic:由前一个界面的设置的显示样式决定。 always:不管其他界面,如何设置,当前只要设置样式为always,则一直显示大标题,不会因界面滚动而显示小标题。 never:与always相反,一直显示小标题