全屏穿透效果需要做到两点
  1. tableView的可视范围占据整个父控件(或者屏幕)--设置contentsize滚动范围。
  2. 所有的cell都可以被看到,也就是说tableView中的cell不会被导航栏,titleView以及TabBar所遮挡--设置contentInset内边距。

例如:首页控制器的view的第一个子控件是scrollView(添加子控制器视图tableview),而且首页控制器包裹了导航控制器和TabBarController,所以,scrollView的内容上边被挤下来64,下边被挤上去49.

解决方案
  1. 可视范围:

    2. 告诉系统不要自动调整scrollView的内边距

    3. 首页控制器:
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完全重合.

但是

新的问题出现了:新的问题出现了:这个时候的tableView和scrollView完全重合,tableView中的内容(在这里是cell,如果有tableHeaderView的话就包括tableHeaderView)和tableview完全重合.那么就会有一部分cell被导航控制器以及titleView挡住.当下拉下来以后,松手就由弹上去了.内容被遮挡.同样底部也会被TabBar挡住

  1. 不被导航遮住内容:

    解决方案:给tableView增加额外的滚动区域,即设置内边距,其中上边设置64(导航条高度)+35(titleView的高度),下边设置49(TabBar高度)。具体代码如下:
scrollView.contentInset = UIEdgeInsetsMake(64 + 35, 0, 49, 0);
   到现在为止完成了所有步骤:

1.通过改变tableView的frame --以及让系统不要自动调整scrollView的内边距让tableView的可视范围为占据整个scrollView

2.通过设置tableView的内边距,让tableView中的所有cell都可以显示,即往下走一个导航栏的高度.

以前介绍tableView的重要属性内边距

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}

最新文章

  1. 【IOS】模仿windowsphone列表索引控件YFMetroListBox
  2. [Q&A] 类Range的PasteSpecial方法无效
  3. Unity3D NGUI刮刮卡效果
  4. Maven基础知识(转)
  5. Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
  6. java json与对象或者集合互转
  7. Android开发之“点9”
  8. HDU5046 Airport dancing links 重复覆盖+二分
  9. Python中map,filter,reduce,zip的应用
  10. BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
  11. NSString 遍历
  12. mybatis面向接口的编程
  13. bzoj 1076: [SCOI2008]奖励关
  14. Vue.js 牛刀小试(持续更新~~~)
  15. 深入理解 Java 多线程核心知识
  16. PAT L2-024 部落
  17. Java访问ActiveMQ
  18. IDC:时钟系统
  19. js-ES6学习笔记-Generator函数的异步应用
  20. 使用QML LocalStorage来存储我们的数据

热门文章

  1. 8.Java 加解密技术系列之 PBE
  2. SVN如何迁移到Git?
  3. Libsvm使用资料
  4. 读《深入理解Java虚拟机》
  5. Linux(Debian、Ubuntu、Deepin等)安装最新版Chrome Unstable
  6. mac安装as配置
  7. boost.property_tree读取中文乱码问题正确的解决方式
  8. 基于angular实现模拟微信小程序swiper组件
  9. phantomjs-prebuilt@2.1.14 install: `node install.js`
  10. [转]AngularJS 之 ng-options指令