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