美文网首页
ContentSize, ContentOffset, Cont

ContentSize, ContentOffset, Cont

作者: 小冰山口 | 来源:发表于2017-09-12 23:29 被阅读0次

    本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含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的情况
    • 有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
    添加子控件, 设置contentInset
    • 添加子控件, 设置contentInset, 设置tableHeaderView, tableFooterView
    添加子控件, 设置contentInset, 设置tableHeaderView, tableFooterView
    总结, 其实上面说了那么多, 总结起来无非下面几句话:
    • 内容的含义:

      • 内容包括: 1. cell
        1. tableHeaderView / tableFooterView
        1. sectionHeader / sectionFooter
    • contentSize.height: 所有内容的高度

    • contentInset: 在内容周围额外增加的间距(内边距), 始终黏着内容

    • contentOffset: 内容距离frame矩形框偏移了多少

    • frame: 以父控件内容的左上角为坐标原点(0,0)

    • bounds: 以自己内容的左上角为坐标原点(0,0)

    PS. 本人有若干成套学习视频, 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

    相关文章

      网友评论

          本文标题:ContentSize, ContentOffset, Cont

          本文链接:https://www.haomeiwen.com/subject/pwuhsxtx.html