一.contentInsetAdjustmentBehavior
作用:
在iOS 11及以后,苹果引入了安全区域(Safe Area)的概念,当UITableView的frame超出了安全区域,系统会自定调整SafeAreaInsets的值,它可以自动调整内容的内边距,使得内容不会被导航栏遮挡。调整的距离分别是20pt(没有naviagtionBar,下移了一个statusBar的高度),64pt(naviagtionBar的高度以及statusBar的高度)
取值:
automatic
(默认)==>通常和`scrollableAxes`相同,但也会根据其他条件调整。scrollableAxes==>只在可滚动的方向上调整内边距
never==>不调整内边距
always==>总是调整内边距,无论是否可滚动
//使用场景
if (@available(ios 11.0,*)) {//当contentInsetAdjustmentBehavior设置为UIScrollViewContentInsetAdjustmentNever的时候,adjustContentInset值不受SafeAreaInset值的影响UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;UITableView.appearance.estimatedRowHeight = 0;UITableView.appearance.estimatedSectionFooterHeight = 0;UITableView.appearance.estimatedSectionHeaderHeight = 0;}
二.sectionHeaderTopPadding
作用:
这个属性是`UITableView`在iOS 15中引入的,用于设置每个section的header顶部的内边距(padding)。在iOS 15之前,section header默认会紧贴在导航栏下方,而在iOS 15中,苹果为每个section header顶部增加了一个默认的间距(通常是22pt)。如果你想要移除这个默认的间距,可以将这个属性设置为0。
背景
iOS 15 默认在每个 Section Header 上方增加了空白(默认值 22pt),通过此属性可修改或移除。
//使用场景
if (@available(ios 15.0,*)){UITableView.appearance.sectionHeaderTopPadding=0;}
三.translatesAutoresizingMaskIntoConstraints
作用:
这个属性是`UIView`的一个属性,用于控制视图的自动调整掩码(autoresizing mask)是否转换为Auto Layout约束。默认情况下,这个属性是`true`,意味着系统会将autoresizing mask转换为对应的约束,这在使用代码创建视图并打算使用Auto Layout时可能会导致约束冲突。
因此,当我们使用Auto Layout来布局视图时,通常会将这个属性设置为`false`,以避免自动转换的约束与我们手动添加的约束产生冲突.
注意事项:
使用 代码创建视图 时,必须设为
false
才能添加自定义约束。Storyboard/XIB 创建的视图会自动设为
false
。
//使用场景UITableView.appearance.translatesAutoresizingMaskIntoConstraints = NO;