Translucent和automaticallyAdjustsScrollViewInsets 属性探究

Translucent :默认为YES 导航栏默认有半透明度,self.view的坐标原点即为(0,0)这时子视图为了不被导航栏遮盖,注意要留出导航栏的高度
  • 注意:当子视图为tableView的时候,系统默认会自动设置边距防止tableView中的内容被遮挡,我们布局的时候self.tableView.top.equalTo(self.view)这样也不会有问题,系统已经搞定了一切
这里要注意一点,当iOS7-11的时候,tableView默认automaticallyAdjustsScrollViewInsets = YES时,仅当tableView = viewcontroller.view.subViews[0]的时候才有效,项目中曾有过这种问题,排查后才发现 stackOverFlow链接 iOS11以上并没有了这个问题,可能contentInsetAdjustmentBehavior已经修复了这个问题
所以系统会自动设置边距,防止cell中的内容被遮盖
automaticallyAdjustsScrollViewInsets = YES
iOS11下该方法已废弃, 默认用该方法替代 
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever
当设置Translucent = NO后,系统默认self.view坐标原点为导航栏下方,布局即不需要计算导航栏高度,当导航栏添加了默认的背景图片,也是Translucent=NO一样的效果
  • 如果不需要系统自动为tableView设置边距,添加以下代码即可,由开发者自己管理
    if (@available(iOS 11.0, *)) {
        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    } else {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }

你可能感兴趣的:(Translucent和automaticallyAdjustsScrollViewInsets 属性探究)