UIViewController 自動調整 TableView ContentInset失敗問題

  1. 背景介紹

    開發過程當中常常會碰到ViewController裏面放一個 TableView 這樣的佈局。ios7以後,導航再也不佔用視圖的尺寸,iOS默認 edgesForExtendedLayout 爲 UIRectEdgeAll 。ios


    那也就是說默認狀況下是視圖是能夠全屏佈局的。point(0,0) 變成了整個屏幕的最左上角,而不是從導航下面開始算。佈局

    固然你也能夠設置edgesForExtendedLayout 爲其餘枚舉值,改變View 的邊緣延伸區域。spa

    那麼問題來了......orm

  2. 問題描述

    拖一個tableview 鋪滿VC的View,顯示出來會被導航擋住64像素的高度嗎?開發

    答案是正常狀況下不會, 由於VC 具備 AdjustScrollViewInset屬性,默認就是會自動調整子scrollview的contentInset, 讓其顯示內容不被NavigationBar 及 tabbar 遮擋。get

    這是正常狀況,妹子顯示完整。可是這只是你的tableview做爲最底層 subview 的狀況it


    若是tableview 不是做爲View 的第一層子視圖會怎樣?io

    在View和tableview 之間加了個view, 妹子的頭被遮住了,發現AdjustScrollViewInset屬性 立刻失效了,勾選了也沒用。table

  3. 解決方案

    看來AdjustScrollViewInset屬性有效也是有前提的,必須是scorllview 做爲 VC 的最底層視圖,固然你若是是tableviewController 不會出現這種問題。ios7

    有多種辦法能夠解決這個問題 

    一、讓tableview 從新回到最底層,代碼佈局的能夠 sendToBack

      二、 手動調整tableview的 inset.top

        

參考:http://stackoverflow.com/a/19129292/4408376

相關文章
相關標籤/搜索