使用UICollectionView
步驟:
- 創(chuàng)建布局layout(可自定義)
- 創(chuàng)建collectionView(注意:必須有布局參數(shù)cell必須注冊(cè)cell必須自定義,系統(tǒng)cell沒有任何子控件)
- 遵守UICollectionViewDataSource協(xié)議
自定義UICollectionViewFlowLayout
通過自定義UICollectionViewFlowLayout實(shí)現(xiàn)滾動(dòng)
UICollectionViewFlowLayout重寫,主要有5個(gè)方法:
//五個(gè)方法用法說明
調(diào)用時(shí)機(jī):collectionView第一次布局,collectionView刷新的時(shí)候也會(huì)調(diào)用
作用:計(jì)算cell的布局
- (void)prepareLayout;
確認(rèn)cell的尺寸
UICollectionViewLayoutAttributes對(duì)象就對(duì)應(yīng)一個(gè)cell
拿到UICollectionViewLayoutAttributes相當(dāng)于拿到cell
作用:返回很多cell的尺寸(指定一個(gè)區(qū)域給你這個(gè)短區(qū)域的cell)(可以一次性返回所有cell,也可以每隔一個(gè)距離返回一個(gè)cell,取決于rect)
- (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect;
在滾動(dòng)的時(shí)候是否允許刷新布局
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds;
調(diào)用時(shí)機(jī):用戶手指一松手的時(shí)候就會(huì)調(diào)用
作用:確認(rèn)最終的偏移量
- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity;
- (CGSize)collectionViewContentSize;