談談tableView的重要屬性內邊距

全屏穿透效果須要作到兩點
  1. tableView的可視範圍佔據整個父控件(或者屏幕)--設置contentsize滾動範圍。
  2. 全部的cell均可以被看到,也就是說tableView中的cell不會被導航欄,titleView以及TabBar所遮擋--設置contentInset內邊距。

例如:首頁控制器的view的第一個子控件是scrollView(添加子控制器視圖tableview),並且首頁控制器包裹了導航控制器和TabBarController,因此,scrollView的內容上邊被擠下來64,下邊被擠上去49.code

解決方案
  1. 可視範圍:
    1. 告訴系統不要自動調整scrollView的內邊距
    2. 首頁控制器:
automaticallyAdjustsScrollViewInsets = NO;

通過這個,ScrollView的內容(tableView)確實上移了,可是仍是預留了20,這個是時候經過打印知道tableView的y值是20,height = 667 - 20 = 647;
4. 設置tableView的 y = 0.
5. 設置tableView的height = scrollView.height;
這個時候就實現了tableView的可視範圍爲整個scrollView.換句話說tableView和scrollView徹底重合.blog

可是
新的問題出現了:新的問題出現了:這個時候的tableView和scrollView徹底重合,tableView中的內容(在這裏是cell,若是有tableHeaderView的話就包括tableHeaderView)和tableview徹底重合.那麼就會有一部分cell被導航控制器以及titleView擋住.當下拉下來之後,鬆手就由彈上去了.內容被遮擋.一樣底部也會被TabBar擋住it

  1. 不被導航遮住內容:
    解決方案:給tableView增長額外的滾動區域,即設置內邊距,其中上邊設置64(導航條高度)+35(titleView的高度),下邊設置49(TabBar高度)。具體代碼以下:
scrollView.contentInset = UIEdgeInsetsMake(64 + 35, 0, 49, 0);
到如今爲止完成了全部步驟:

1.經過改變tableView的frame --以及讓系統不要自動調整scrollView的內邊距讓tableView的可視範圍爲佔據整個scrollViewio

2.經過設置tableView的內邊距,讓tableView中的全部cell均可以顯示,即往下走一個導航欄的高度.table

之前介紹tableView的重要屬性內邊距scroll

1. 主要概念

2.
a.沒有cell
b.沒有contentInset
c.沒有tableHeaderView、tableFooterView

3.
a.沒有cell
b.沒有contentInset
c.有tableHeaderView、tableFooterView

4.
a.有cell
b.沒有contentInset
c.沒有tableHeaderView、tableFooterView

5.
a.有cell
b.有contentInset
c.沒有tableHeaderView、tableFooterView

6.
a.有cell
b.沒有contentInset
c.有tableHeaderView、tableFooterView

7.
a.有cell
b.有contentInset
c.有tableHeaderView、tableFooterView

8.
a.有cell
b.沒有contentInset
c.沒有tableHeaderView、tableFooterView
d.有額外子控件{0,-40,375,40}

9.
a.有cell
b.沒contentInset
c.沒有tableHeaderView、tableFooterView
d.有額外子控件{0,-40,375,40}

10.
a.有cell
b.沒有contentInset
c.有tableHeaderView、tableFooterView
d.有額外子控件{0,-40,375,40}

11.
a.有cell
b.有contentInset
c.有tableHeaderView、tableFooterView
d.有額外子控件{0,-40,375,40}

相關文章
相關標籤/搜索