• iOS-UICollectionView自定义布局


    UICollectionView自定义布局

    转载:

    http://answerhuang.duapp.com/index.php/2013/11/20/custom_collection_view_layouts/

    主要属性介绍

    UITableView和UICollectionView都是由data-source和delegate驱动的.使用起来两者相似.

    UICollectionViewCell相当于table view中的cell, 用法也是一样的.

    Supplementary views相当于table view的section header和footer views。像cells一样,他们的内容都由数据源对象驱动。然而,和table view中用法不一样的是,supplementary view并不一定会作为header或footer view;他们的数量和放置的位置完全由布局控制。从这个角度来讲,和cell差不多.

    Decoration views纯粹为一个装饰品。他们完全属于布局对象,并被布局对象管理,他们并不从数据源获取他们的contents。当布局对象指定它需要一个decoration view的时候,collection view会自动创建,并为其应用布局对象提供的布局参数。并不需要准备任何自定义视图的内容。

    UICollectionViewCell, Supplementary views和decoration views必须是UICollectionResuableView的子类。每个你布局所使用的视图类都需要在collection view中注册,这样当data source让他从reuse pool中出列时,它才能够创建新的实例。

    自定义布局用到函数介绍

    -(CGSize)collectionViewContentSize

    用来确定collectionView的ContentSize的大小

    layoutAttributesForElementsInRect:

    关键函数, 用来控制cell, Supplementary view, 还有Decoration view的自定义布局属性, 将这些自定义布局属性组成这个数组, 返回. 这些自动布局属性,分别通过下面的三个函数来获取的layoutAttributesForItemAtIndexPath, layoutAttributesForSupplementaryViewOfKind, layoutAttributesForDecorationViewOfKind

    -(UICollectionViewLayoutAttributes )layoutAttributesForItemAtIndexPath:(NSIndexPath )indexPath

    获取cell的自动布局属性

    -layoutAttributesForSupplementaryViewOfKind:withIndexPath:

    获取SupplementaryView的自动布局属性

    -layoutAttributesForDecorationViewOfKind:withIndexPath:,

    获取DecorationView的自动布局属性

    -shouldInvalidateLayoutForBoundsChange:

    当bound变化的时候, 调用此函数. 如果返回yes, 将调用layoutAttributesForElementsInRect等一系列函数, 重新获取各个元素的自动布局.

    例子:

    下面为自己写的一个例子:
    demo效果图

    地址为: http://download.csdn.net/detail/daiyibo123/9144827

  • 相关阅读:
    比较两个树是否相同
    将一个字符串转换成一个整数
    求数组中第一个重复数字
    Redis之哨兵机制(sentinel)——配置详解及原理介绍
    ==和equals的区别
    求一个数的立方根
    检测应用版本
    【转】UITableViewCell自适应高度 UILabel自适应高度和自动换行
    iOS7中Cell高度 Label高度自适应
    MarsEdit 快速插入代码
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026873.html
Copyright © 2020-2023  润新知