本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java
, 数据结构与算法
, iOS
, 安卓
, python
, flutter
等等, 如有需要, 联系微信tsaievan
.
好久没更新简书了, 今天说一点UI基础的知识点. 那就是标题涉及的几个概念.
以tableView为例, 因为tableView是继承自UIScrollView的, 那么当然会有contentSize
- 有cell, 无contentInset, 无tableHeaderView,tableFooterView的情况
-
有cell, 无contentInset, 有tableHeaderView,tableFooterView的情况
有cell, 无contentInset, 有tableHeaderView,tableFooterView的情况 -
有cell, 有contentInset, 无tableHeaderView,tableFooterView的情况
那么如果出现下列状况, tableView的contentOffset.y是多少呢?
计算contentOffset.y-
对于情况1来说, contentInset内边距并不是内容的一部分, 所以contentOffset算内容的偏移量是不会把边距算进去的, 那么偏移量就应该从第一个cell的原点开始算, 那么此时的contentOffset.y就应该是0 - 64, 为-64
-
对于情况2来说, tableHeaderView是内容的一部分, 所以contentOffset算内容的偏移量是要把tableHeaderView算进去的, 那么偏移量就应该从tableHeaderView的原点开始算, 那么此时的contentOffset.y就应该是0
最后我们来考虑一些非常特殊的情况
- 添加子控件, 不设置contentInset
- 添加子控件, 设置contentInset
- 添加子控件, 设置contentInset, 设置tableHeaderView, tableFooterView
总结, 其实上面说了那么多, 总结起来无非下面几句话:
-
内容的含义:
- 内容包括: 1. cell
- tableHeaderView / tableFooterView
- sectionHeader / sectionFooter
-
contentSize.height: 所有内容的高度
-
contentInset: 在内容周围额外增加的间距(内边距), 始终黏着内容
-
contentOffset: 内容距离frame矩形框偏移了多少
-
frame: 以父控件内容的左上角为坐标原点(0,0)
-
bounds: 以自己内容的左上角为坐标原点(0,0)
网友评论