一. 以UITableViewController为例
iOS 11.0 以下
self.automaticallyAdjustsScrollViewInsets = NO;
iOS 11.0 以上
if ([self.tableView respondsToSelector:@selector(contentInsetAdjustmentBehavior)]) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
二. 导航控制器UINavigationController
导航条上的子控件布局发生了变化
iOS 11.0 以下
导航条左/右边的按钮 直接添加在 UINavigationBar 上
UINavigationBar -> 自定义左/右边的视图
导航条的标题栏 添加在 UINavigationItemView 上
UINavigationBar -> UINavigationItemView -> 标题栏
iOS 11.0 以上
导航条自定义左/右边的视图层级顺序
UINavigationBar -> UINavigationBarContentView -> UIButtonBarStackView -> UITAMICAdaptorView -> UIView -> 自定义左/右边的视图
导航条的标题栏 添加在 UINavigationBarContentView 上
UINavigationBar -> UINavigationBarContentView -> 标题栏
三. UINavigationBar 使用变化
iOS 11.0 以下
点击Bar上的按钮, 触发delegate执行
{navigationBar:shouldPushItem:, navigationBar:didPushItem:}
后, 点击返回按钮, 无法再触发delegate执行
{navigationBar: shouldPopItem:, navigationBar:didPopItem:}
同时视图也不会再回到之前
iOS 11.0 以上
点击Bar上的按钮, 触发delegate执行
{navigationBar:shouldPushItem:, navigationBar:didPushItem:}
后, 点击返回按钮, 可以正常触发delegate执行
{navigationBar: shouldPopItem:, navigationBar:didPopItem:}
同时视图会回到之前