1.tablview上移64p
在iOS11之前,设置automaticallyAdjustsScrollViewInsets = NO,但是iOS11里该属性被废弃了,那么设置tableview的contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever
2.iPhoneX模拟器 push时tabar上移
push的时候重新设置tabbar的frame
CGRect frame = self.tabBarController.tabBar.frame;
if (frame.origin.y < ([UIScreen mainScreen].bounds.size.height - 83)) {
frame.origin.y = [UIScreen mainScreen].bounds.size.height - 83;
self.tabBarController.tabBar.frame = frame;
}
可建一个继承与UINavigationController的子类,重写pushViewController:(UIViewController *)controller animated:(BOOL)animated;方法:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
[super pushViewController:viewController animated:animated];
CGRect frame = self.tabBarController.tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.size.height;
self.tabBarController.tabBar.frame = frame;
}
3.tableview的self-sizing(自动估高机制)是默认打开的,像以前一样调用setcontentoffset会不准确
4.tableview 在group style下若不想要顶部留白,同时实现了heightForHeaderInSection方法,并且实现实现viewForHeaderInSection方法,或者设置预估值为0,关闭估算行高
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
5.navigationBar的改变
titleview支持autolayout,titleview在ios11下发现变窄,重写 intrinsicContentSize方法便可
- (CGSize)intrinsicContentSize{
return UILayoutFittingExpandedSize;
}
navigaitonbar集成了UISearchController(增加了相关属性)
6.iOS11中对UINavigaBar做了新的自动布局扩展支持,自定义的title和bar button items 都可以通过layout来表示尺寸
7.automaticallyAdjustsScrollViewInsets解析
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
此属性是ios7的特性,ios7加入的,默认为yes,也就是说在一个viewcontroller里若有多个scrollview或者scrollview的子视图,viewcontroller为自动优化scrollview的inset,会出现意想不到的bug(🙃),所以多个scrollview或者子视图的情况下最好设置self.automaticallyAdjustsScrollViewInsets = NO;我们自己再布局