谈谈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}

相关文章
相关标签/搜索