UICollectionView简单使用

1. UICollectionView

1.Cells
2.Supplementary Views 追加视图 (类似Header或者Footer)
3.Decoration Views 装饰视图 (用作背景展示)

1.1三个代理 :

1.DataSource  提供数据 
2.Delegate  用户交互 
3.CollectionViewLayout  布局 

2. UICollectionViewLayout

2.1 UICollectionViewLayoutAttributes类的介绍:

1一个cell对应一个UICollectionViewLayoutAttributes对象
2.UICollectionViewLayoutAttributes对象决定了cell的摆设位置(frame)

@property (nonatomic) CGRect frame 
@property (nonatomic) CGPoint center @property (nonatomic) CGSize size 
@property (nonatomic) CATransform3D transform3D 
@property (nonatomic) CGFloat alpha 
@property (nonatomic) NSInteger zIndex @property (nonatomic, getter=isHidden) BOOL hidden

2.2 自定义的UICollectionViewLayout
需要重载在以下方法:

- (void)prepareLayout 准备方法被自动调用,以保证layout实例的正确。 

- (CGSize)collectionViewContentSize 返回collectionView的内容的尺寸 

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect 1.返回rect中的所有的元素的布局属性 2.返回的是包含UICollectionViewLayoutAttributes的NSArray 3.UICollectionViewLayoutAttributes可以是cell,追加视图或装饰视图的信息,通过不同的UICollectionViewLayoutAttributes初始化方法可以得到不同类型的UICollectionViewLayoutAttributes: 1)layoutAttributesForCellWithIndexPath: 2)layoutAttributesForSupplementaryViewOfKind:withIndexPath: 3)layoutAttributesForDecorationViewOfKind:withIndexPath: 

-(UICollectionViewLayoutAttributes )layoutAttributesForItemAtIndexPath:(NSIndexPath )indexPath 返回对应于indexPath的位置的cell的布局属性 

- (UICollectionViewLayoutAttributes )layoutAttributesForSupplementaryViewOfKind:(NSString )kind atIndexPath:(NSIndexPath *)indexPath 返回对应于indexPath的位置的追加视图的布局属性,如果没有追加视图可不重载 

- (UICollectionViewLayoutAttributes * )layoutAttributesForDecorationViewOfKind:(NSString)decorationViewKind atIndexPath:(NSIndexPath )indexPath 返回对应于indexPath的位置的装饰视图的布局属性,如果没有装饰视图可不重载 

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds 当边界发生改变时,是否应该刷新布局。如果YES则在边界变化(一般是scroll到其他地方)时,将重新计算需要的布局信息。

2.3 调用顺序

1)- (void)prepareLayout 设置layout的结构和初始需要的参数等。

2) - (CGSize) collectionViewContentSize 确定collectionView的所有内容的尺寸。

3)- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect初始的layout的外观将由该方法返回的UICollectionViewLayoutAttributes来决定。4)在需要更新layout时,需要给当前layout发送 1)-invalidateLayout, 该消息会立即返回,并且预约在下一个loop的时候刷新当前layout 2)-prepareLayout, 3)依次再调用-collectionViewContentSize和-layoutAttributesForElementsInRect来生成更新后的布局。

继承UICollectionViewLayout之后只需要重载几个提供布局核心特性的方法,其他方法只需按情况重载即可,核心特性如下:

1 指定可滚动内容区域的size

2 为布局中的每个Cell及view提供属性对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容