1.automaticallyAdjustsScrollViewInsets.
默认为yes,当视图控制器里面第一个被添进去的视图是UIScrollView或其子类时,系统会自动调整其内边距contentInset ,为了保证滚动视图的内容不被UINavigationBar和UITabBar遮挡 (iOS7 ~iOS11)iOS11被废除 由UIScrollView的属性contentInsetAdjustMentAutomatic 代替,这是个枚举类型contentInsetAdjustmentBehavior /* UIScrollViewContentInsetAdjustmentAutomatic UIScrollViewContentInsetAdjustmentScrollableAxes UIScrollViewContentInsetAdjustmentNever, UIScrollViewContentInsetAdjustmentAlways, */ if (@available(iOS 11.0, *)) { self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { //默认是YES 当视图控制器里面第一个被添加进去的视图是UIScrollView或其子类时,系统会自动调整其内边距属性contentInset 为了保证滚动视图的内容不被UINavigationBar和UITabBar遮挡 self.automaticallyAdjustsScrollViewInsets = NO; }
2.edgesForExtendedLayout
控制器自带View边距是否延伸至全屏 它是个枚举类型 UIRectEdgeNone = 0,//view不会延伸到导航栏和状态栏里面 UIRectEdgeTop = 1 << 0, UIRectEdgeLeft = 1 << 1, UIRectEdgeBottom = 1 << 2, UIRectEdgeRight = 1 << 3, UIRectEdgeAll(默认) view延伸至全屏 从属性1和属性2可以推测,由于默认延伸至全屏,默认自适应内边距,当设置UIRectEdgeNone时,自适应内边距也需要改成NO,界面布局才不会出现问题
3.extendedLayoutIncludesOpaqueBars
延伸视图是否包含不透明的bar, 用来指定导航栏是否透明,在一定意义上
self.extendedLayoutIncludesOpaqueBars = NO;与self.edgesForExtendeLayout = UIRectEdgeNone;效果一样,都是从导航栏下部开始的
4.modalPresentationCapturesStatusBarAppearance
默认NO 当前控制器present一个带有statusbar控制器的界面时,当前控制器是否有对这个statusbar的控制权,设为no,则没有,设为yes,我们可以指定另一个界面的statusBar