一.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;