最近在項目中很奇怪的發現表單控件頂部莫名其妙的會留出一段空白,使第一個 cell 不能置頂,研究發現該情況主要由于系統內部自動布局功能引起的。tableView 繼承自scrollerView,打印tableView 的contentInset 屬性可以發現其值為 (64,0,0,0),多了一個導航條的高度,這是因為在自動布局情況下系統自動幫我們統計了導航條高度,依照這個思路,我們可以從這三個方面著手解決
方案一:
認為改變 contentInset 的值,將其設為 uiedgeinsetzero ,注意需要在系統布局完成之后設置該值,推薦寫在 viewdidappear和viewdielayout
方案二:
設置? self.automaticallyAdjustsScrollViewInsets = NO;? 該方法禁止系統自動調整? contentInset 的值
方案三:
設置? self.navigationController.navigationBar.translucent = NO;? 設置導航條的透明屬性,可以看到該值設置完成后 contentInset 處于歸零狀態,但是 界面正式顯示區域 和 導航條之間會出現一條縫隙,謹慎使用。
注意:
以上三個方法都需要在控制器界面布局完成后使用,推薦寫在 viewdidload和viewwillappear里面