全屏穿透效果需要做到两点
  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}

谈谈tableView的重要属性内边距的更多相关文章

  1. CSS 内边距 padding 属性

    CSS padding 属性定义元素边框与元素内容之间的空白区域. ㈠padding(填充) ⑴当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充. ⑵单独使用 p ...

  2. 前端 CSS 盒子模型 padding 内边距 属性

    padding:就是内边距的意思,它是边框到内容之间的距离 另外padding的区域是有背景颜色的.并且背景颜色和内容区域的颜色一样.也就是说background-color这个属性将填充所有的bor ...

  3. css常用属性:居中展示、内边距、外边距

    1.横向居中.纵向居中 2.纵向展示3个块级(div标签即可纵向展示) 3.横向展示3个块级 4.在横向块级上加上边框的两种方法 法一:在父级div上加上和样式一样高的height 法二:在父级div ...

  4. 【Swift】UILabel 设置内边距

    前言 对应一个曾经开发 Android 的人来说,没有这些基础属性简直令人发指,还是表喷这个,认真写代码 - - # 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblo ...

  5. W3School-CSS 内边距 (padding) 实例

    CSS 内边距 (padding) 实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CS ...

  6. iOS开发——UI基础-按钮内边距,图片拉伸

    一.内边距 UIButton有三个属性,分别可以设置按钮以及内部子控件的内边距 1.contentEdgeInsets 如果是设置contentEdgeInsets, 会把UIImageView和UI ...

  7. CSS权威指南 - 内边距 边框 和 外边距

    九十年代的完全用表格布局,简单的段落边框都需要用表格.CSS让布局更方便. 基本元素框 basic element boxes 如同第七章基本视觉格式化那一章讲到,每个文档元素会生成一个元素框,这个框 ...

  8. 注意padding-top 百分比定义基于父元素宽度的百分比上内边距!!是基于宽度

    定义和用法 padding-top 属性设置元素的上内边距(空间). 说明 该属性设置元素上内边距的宽度.行内非替换元素上设置的上内边距不会影响行高计算,因此,如果一个元素既有内边距又有背景,从视觉上 ...

  9. css内边距与外边距的区别

    你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素.内联元素中的区别?什么时候该用 padding而不是margin?你知道负margin吗?你 ...

随机推荐

  1. APP为什么需要着陆页

    小编APP运营团队一直认为,虽然大多数的用户会在App Store或安卓应用商店中搜寻我们的应用,但也有许多用户会通过传统的PC端搜索来寻找答案.而且在APP营销中,为了更好的将用户转换为下载或购买, ...

  2. How and when: ridge regression with glmnet

    @drsimonj here to show you how to conduct ridge regression (linear regression with L2 regularization ...

  3. 03 编译安装apache的简易配置

    1.监听端口,默认为80,在主配置文件 /etc/httpd24/httpd.conf中可以更改 2.持久连接 Include /etc/httpd24/extra/httpd-default.con ...

  4. C#码农的大数据之路 - HDP SandBox配置及VS连接.md

    在进行HDInsight的开发测试之前,搭建一个测试环境是很重要的. 由于微软与Hortonworks合作开发了HDInsgiht,如果不方便建立Azure账号使用Azure HDInsight进行开 ...

  5. Maximum Subarray Sum

    Maximum Subarray Sum 题意 给你一个大小为N的数组和另外一个整数M.你的目标是找到每个子数组的和对M取余数的最大值.子数组是指原数组的任意连续元素的子集. 分析 参考 求出前缀和, ...

  6. 什么是 html 标签,html 实体

    为什么需要转换 更简了,因为有时候我们需要在浏览器页面中显示 html 标签,然而直接输出<script>alert(1)</script>,在浏览页面时将会被当作 html ...

  7. [附录]Discuz X2.5 模板目录结构注释说明

    /template/default/common  公共模板目录全局加载 block_forumtree.htm  DIY论坛树形列表模块 block_thread.htm  DIY帖子模块调用文件 ...

  8. Tomcat7配置管理员帐号密码及权限

    在使用tomcat时,若要使用管理监控功能,需要用用户名密码登录使用,而tomcat7默认是将用户是注释的,所以需要配置后使用, 配置文件为根目录下的/conf/tomcat-users.xml文件. ...

  9. 【iOS】UIDynamicAnimator动画

    创建动画 UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 协议代理 ...

  10. Kubernets 资源类型简介

    # Node 代表 Kubernets 集群运行的宿主物理机或者虚拟服务器, 为容器提供必要的计算资源: 内存 与 CPU 等. # Pod 最底层的抽象. 一个 Pod 中可以包含一个或者多个运行的 ...