iOS 11适配整理

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;我们自己再布局

你可能感兴趣的:(iOS 11适配整理)