美文网首页
UICollectionView简单使用

UICollectionView简单使用

作者: 海的原滋味 | 来源:发表于2017-11-10 09:57 被阅读4次

    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提供属性对象
    

    相关文章

      网友评论

          本文标题:UICollectionView简单使用

          本文链接:https://www.haomeiwen.com/subject/yfovmxtx.html