iOS 自定义布局 - 继承UICollectionViewFlowLayout

  • 目的
18042C9038A85DC9D1247856BF035137.jpg
C1077B55AF91D6EFA6D6B4A5F53023C7.png
  • UICollectionViewLayoutAttributes


    B907E982F57A3D741C297403ACCDF6F8.jpg

重写layoutAttributesForElementsInRect:方法

  • 作用:
    • 这个方法的返回值是个数组
    • 这个数组中存放的都是UICollectionViewLayoutAttributes对象
    • UICollectionViewLayoutAttributes对象决定了cell的排布方式(frame等)
12673EEA68482261DA13652FB993C115.jpg
  • 绝对值
F6DB6AC15B5AE0A7ADE33371069CD4A8.jpg

重写shouldInvalidateLayoutForBoundsChange:方法

  • 作用:如果返回YES,那么collectionView显示的范围发生改变时,就会重新刷新布局
  • 一旦重新刷新布局,就会按顺序调用下面的方法:
    • prepareLayout
    • layoutAttributesForElementsInRect:
00869894DA64A891E801D0DB16A2F79F.jpg
  • 示意图
22CAADA698D4ADBCEFF05F5ADE70D0EB.jpg
  • 理解
C3D49899B52E2381B822DBA7B0E033B1.jpg

重写targetContentOffsetForProposedContentOffset:withScrollingVelocity:方法

  • 作用:返回值决定了collectionView停止滚动时最终的偏移量(contentOffset)
  • 参数:
    • proposedContentOffset:原本情况下,collectionView停止滚动时最终的偏移量
    • velocity:滚动速率,通过这个参数可以了解滚动的方向


      D06BFC37B363737EF6C5E76D2E9D621C.jpg
F54531CD89F18770DC5E3825C608A1C2.jpg
6F7848E3668D3B83C6CB28FB67E85EF9.jpg

重写prepareLayout方法

  • 作用:在这个方法中做一些初始化操作
  • 注意:一定要调用[super prepareLayout]
BD4C9DFBD590BECFF395E0916D3879A4.jpg
A0C3FEF7B2AAEE7637A1C33F2AAF52D4.jpg
  • 枚举类型定义成常量


    D78082CEB322FD5CE369C9B533C356DE.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容