1⃣️
UICollectionView與UITableView的
區別:佈局
UICollectionView與UITableView的
共同點:循環利用
—> UITableView繼承UISCrollView
注意:
—> UICollectionView 初始化必需要傳入佈局
UICollectionViewLayout
UICollectionViewFlowLayout 流水佈局:九宮格佈局
—> UICollectionViewCell必需要註冊
—> 必須自定義cell
方法抽取的原則:高聚合,低耦合.
—> 對於項目功能的模塊,實行抽取方法
—> 對於設置屬性的模塊,可使用以下方式⬇️
2⃣️
當系統的方法無法知足咱們的需求的時候,咱們就能夠
自自定義類,重寫方法,達到一些效果.
思路:
照片瀏覽佈局:1.(流水佈局)在拖動的時候,在原來基礎上從新計算下佈局
2.在原來功能上再添加功能,須要自定義流水佈局
🚀
自定義UICollectionView佈局.瞭解5個方法
⭐️- (void)prepareLayout;
何時調用:一開始佈局就會調用,UICollectionView刷新的時候也會調用
做用:計算全部的cell佈局,條件:cell佈局固定
⭐️- (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect;
做用:返回每一個cell佈局,
給定一個區域,就返回這個區域內全部cell佈局
容許一次性返回全部cell佈局
分析:
UICollectionViewLayoutAttributes:描述cell的佈局
每個cell對應UICollectionViewLayoutAttributes
只要拿到UICollectionViewLayoutAttributes,拿到cell
⭐️- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds;
Invalidate:刷新
是否容許在拖動的時候刷新佈局
謹慎使用,YES:只要一滾動就會佈局
⭐️- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity;
何時調用:手動拖動UICollectionView,當手指離開的時候,就會調用
做用:返回UICollectionView最終的偏移量
proposedContentOffset:最終的偏移量
⭐️- (CGSize)collectionViewContentSize;
—>個人總結:
UICollectionView與UIScrollView比較:
UICollectionView建立的同時必需要初始化佈局
這裏選擇UICollectionViewFlowLayout流水佈局
↘️所須要的兩個對象
UICollectionView *collectionView;
UICollectionViewFlowLayout *layout;
↘️在layout中,設置佈局的一些屬性
itemSize:collectionView中的每一個模型尺寸
scrollDirection:滾動方向
sectionInset:設置額外滾動區域
......
建立collectionView對象並同時傳入佈局layout,
↘️設置collectionView屬性
設置collectionView的相關屬性:位置,背景色,.....
↘️注意
UICollectionView和UIScrollView的不一樣之處就體如今佈局,
UICollectionView初始化時須要佈局且UICollectionView內的控件徹底根據佈局的設置來顯示,不須要去設置滾動區域.
UIScrollView須要去根據控件的多少來設置內容滾動區域contentSize.
👉UITableView繼承自UIScrollView