撩一撩小妖精tableView的进阶属性(六一版)

(六一福利)

  • 子树: 嘿, tableView, 你这个刺头的小妖精, 接招吧!
  • TabV: 人家哪里刺头啦? 5555, 爹地scrollView才刺头呢
  • 子树: 一个一个来, 今天就你了, 看贱!
  • TabV: 切, 拿错剑啦, 这两下子就想让本小妖臣服? 回家继续撸代码去吧
  • 子树: .....居然被你鄙视了, 看Xcode~

一 小妖精的部分属性

本篇以竖直方向为主

  1. 什么是tableView的内容(content)
  • cell
  • tableHeaderView/tableFooterView
  • sectionHeader/sectionFooter

TabV: 这些才是俺的内容, 别的可不是

  1. contentSize.height : 内容的高度

  2. contentOffset.y : 内容的偏移量(frame的top - content的top)

  3. contentInset : 内容周边的距离(内边距)

  4. Frame 可视范围

  • frame.size.height : 矩形框的高度
  • frame : 以父控件内容的左上角为坐标原点
  1. 以上这些, 看下面的图


    图0
  • TabV: 那些cell应该都在俺身上呢, 你咋画那么远?
  • 子树: 画工不行, 只能犹抱琵琶半遮面了
  • TabV: .....

二 小妖精的各种常见情景

  1. 没有cell, 没有contentInset, 没有tableHeaderView/tableFooterView,类似:


    图1
  • TabV; 啥? 这情况你都能出现? 我上面的数据呢? 我的内容呢?
  • 子树: 额, 我再去查下源码....
  1. 没有cell, 没有contentInset, 有tableHeaderView/tableFooterView,类似:


    图2
  • TabV; 这次还算不错, 总算把我的内容恰好穿在身上, 但是, 说好的常见的情景呢? 这情景常见?
  • 子树: 额, 只有header和footer, 这不是为了展示一下你的衣(Nei)服(Rong)么?
  1. 有cell, 没有contentInset, 没有tableHeaderView/tableFooterView, 类似图0, 这里就不上图了.
  • 子树: 这应该是最简单最常见情况了吧
  • TabV: Bingo~ 你说的对
  1. 有cell, 有contentInset, 没有tableHeaderView/tableFooterView, 比如:


    图3
  • TabV: 注意哦, top和bottom是contentInset, 是内边距, 是磨人的小妖精, 是魔鬼的步伐
  • 子树: 有内边距后, 可以增加小妖精的滚动范围
  • TabV: 我滚 我上滚 下滚 怎么滚都不一样~~~


    图4
  1. 有cell, 没有contentInset, 有tableHeaderView/tableFooterView, 如


    图5
  • TabV: header和footer可是我的内容哦
  • 子树: 切, 没人跟你抢
  1. 有cell, 有contentInset, 有tableHeaderView/tableFooterView, 如


    图6
  • TabV: 有内边距就我就可以多滚一些啦, 自从有了内边距, 爹地再也不担心可恶的导航条和tabBar挡住人家的内容啦
  • 子树: 你爹地是陈塘关李靖么? 空手接白刃, 出神入化
  • TabV : 不, 人家是tableView, 爹地是scrollView, 人家为自己带盐
  1. 有cell, 没有contentInset, 没有tableHeaderView/tableFooterView, 但是有额外的子控件{0, -44, 375, 44},如


    图7
  • TabV : 那个啥, 那个子控件是通过代码创建, 可不是俺滴内容, 俺不要, 但是在俺的内容top处有了子控件, 俺就可以滚得更远啦;
  • 子树 : 是滑动更远了, 不是滚.....
  • TabV : 都一样都一样
  1. 有cell, 没有contentInset, 有tableHeaderView/tableFooterView, 但是有额外的子控件{0, -44, 375, 44}, 如


    图8
  • TabV : 看好啦, 子控件是会跑到俺的内容外面的, header可是俺滴内容
  • 子树 : 又来, 真没人跟你抢
  1. 有cell, 有contentInset, 有tableHeaderView/tableFooterView, 但是有额外的子控件{0, -44, 375, 44}, 如


    图9
  • TabV : 嘻嘻, 内边距top和子控件可不是俺滴内容, 为了成为俺滴小弟, 居然打(Chong)了(Die)起来;
  • 子树 : 这话叫我咋接
    ...
  • TabV : 你不咋继续了?
  • 子树 : 暂时我就想到这么几种情景;
  • TabV : 切, 才这9种啊? 而且, 居然还不上代码
  • 子树 : 这需要上代码?
  • TabV : 不需要么? 大概是懒在做怪
  • 子树: 需要么? 但是, 但是, 但是, 重要的事说三遍
  • TabV : 重要不是"但是", 是但是后面滴
  • 子树 : 但是大伙以后用到tableView这个小妖精的时候
  • TabV : 遇到问题就多想想我的这几个属性和原理
  • 子树 : 话都被你抢完了, 跟大伙说拜拜啦
  • TabV : 等等, 如果各位大神还发现本小妖的其他的^&#@$?*!&, 反正就是各种啦, 欢迎补充, 另外, 发现或者验证子树的不对的地方, 欢迎下方留言, 嘻嘻, 哈哈哈哈
  • 子树 : 话真的都被你说话了.....
  • TabV : 拜拜, 大伙
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容