控制器對象屬性:自動調整scrollview的內邊距

前提:

1.控制器的view是默認占據整個屏幕

?2.scrollview默認位置大小都為0,要占據整個屏幕,frame應該等于self.view.bounds

?3.這里的scrollview既指普通的scrollview也指tableview

?4.主要分析scrollview上面加多個tableview的結構

原則:

1.scrollview或者tableview一旦占據了整個屏幕,如果前面有導航條,系統會自動設置一個64的內邊距,將內容視圖下調64,內容位置發生變化

2.就算scrollview身上已經加了一個tableview,手動設置frame為全屏,這個tableview也會隨著內容視圖的改變而改變,因為tableview實質上是加到內容視圖上的,也就是說系統不管你有沒有手動設置子視圖的frame,它是自動話判定,一遇到這種情況,就會自動調整

3.這樣的調整是當前控制器對象內部通過一個屬性自動調整scrolllview的內邊距automaticallyAdjustsScrollViewInsets=YES進行調整的,注意這個屬性是控制器對象的,而不是scrollview或者tableview的

調整后的優點與缺點:

優點:scrollview中的內容不再被導航條擋住

缺點:如果在scrollview上加了tableview后,tableview就會被壓縮區域,內容的上下滾動,只能在限定的區域內移動,無法穿透整個導航條

注意:這里是討論控制器view上加了scrollview,scrollview上右加了tableview,下調64,導致tableview隨著下調,從而cell無法穿過導航欄,如果只是在控制器view上加了tableview,就不需要考慮這種情況

取消自動調整:

如何取消系統對scrollview或者tableview的自動調整呢?

self.automaticallyAdjustsScrollViewInsets = NO

此時內邊距為0,這樣tableview就可以設置frame占據整個屏幕,不會發生變化,cell也能通過導航欄

必須設置它的frame

如何設置frame呢?

y為0,寬高均為scrollview的寬高

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容