文档章节

UICollection要点

d
 dadage456
发布于 2017/01/17 11:02
字数 525
阅读 0
收藏 0

一、UICollectionView 要点

  • UICollectionLayout布局方法的执行顺序
  • UICollectionLayout实现自定义布局要点
  • UICollect这里是列表文本ionViewLayoutAttributes实现自定义布局属性要点
  • 重新计算布局属性
  • 自动对齐到网格
int a=b;

1、UICollectionView 构成

  • Cells
  • Supplementary Views 追加视图(类似Header 或则 Footer)
  • Decoration Views 装饰视图(用作背景展示)

2、布局方法的执行顺序

  1. prepareLayout()
  2. -(CGSize)collectionViewContentSize
  3. -(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect

3、自定义UICollectionLayout实现自定义布局

主要继承UICollectionLayout以下方法,实现布局自定义。

  • -(void)prepareLayout

    开始布局前,调用的方法。可以用来一次把所有的布局属性放到一个NSArray中。

  • -(CGSize)collectionViewContentSize

    返回CollectionView的内容尺寸

  • -(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect

    1. 返回rect中的所有元素的布局属性
    2. 返回的是包含UICollectionViewLayoutAttributes的NSArray
    3. UICollectionViewLayoutAttributes可以是Cell追加视图装饰视图
    4. 不要返回所有的属性,只显示Rect相交的属性。节省性能。
  • -(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds

    YES : 边界发生变化,刷新布局。
    不要直接返回YES,判断UICollectionView的frame改变时再返回YES。

  • -(UICollectionViewLayoutAttributes _)layoutAttributesForItemAtIndexPath:(NSIndexPath _)indexPath

    返回对应于indexPath的位置的Cell的布局属性

  • -(UICollectionViewLayoutAttributes _)layoutAttributesForSupplementaryViewOfKind:(NSString _)kind atIndexPath:(NSIndexPath *)indexPath

    返回对应于indexPath的位置的追加视图的布局属性

  • -(UICollectionViewLayoutAttributes * )layoutAttributesForDecorationViewOfKind:(NSString_)decorationViewKind atIndexPath:(NSIndexPath _)indexPath

    返回对应于indexPath的位置的装饰视图的布局属性

4、自定义UICollectionViewLayoutAttributes

主要用来布局cell、追加视图、装饰视图里面的指定子元素。

  • 实现NSCopying协议?
  • 实现-(BOOL)isEqual:(id)object父类方法?
  • 在cell、追加视图、装饰视图中,实现-(void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes方法,具体布局指定元素。
  • 在Layout类中实现以下方法?
    • +(Class)layoutAttributesClass

5、重新计算布局

  • invalidateLayout:执行布局方法,从-(void)prepareLayout方法开始重新计算布局。

6、切换布局

注意:切换的2个布局必须已经实现了 -(UICollectionViewLayoutAttributes _)layoutAttributesForItemAtIndexPath:(NSIndexPath _)indexPath方法。否则会报错。

  • setCollectionViewLayout:animated:

7、动画效果

  • initialLayoutAttributesForAppearingItemAtIndexPath:
  • initialLayoutAttributesForAppearingSupplementaryElementOfKind:atIndexPath:
  • initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:
  • finalLayoutAttributesForDisappearingItemAtIndexPath:
  • finalLayoutAttributesForDisappearingSupplementaryElementOfKind:atIndexPath:
  • finalLayoutAttributesForDisappearingDecorationElementOfKind:atIndexPath:

8、DEMO与参考

© 著作权归作者所有

上一篇: UICollection要点
下一篇: UICollection要点
d
粉丝 0
博文 10
码字总数 5374
作品 0
青岛
私信 提问
万物有源_Android自动化测试框架UIAutomator原理浅析

简介 UIAutomator是一个Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架,它只能用于UI即黑盒方面的测试。所以UIAutomator只能运行在Android4.1之后的...

维他ViTa
03/16
253
0
BMYCircularProgressPullToRefresh

BMYCircularProgressPullToRefresh 是下拉刷新,带有圆形进程视图,类似 Beamly iOS 应用。 此版本的下拉刷新特性可以再 UITableViews 和 UICollection 上使用,灵感来源于 Sam Vermette's S...

叶秀兰
2014/07/22
498
0
关联选择器--MBContactPicker

MBContactPicker 是基于 UICollection View 的 iOS 风格的关联选择工具库,实现类似 iOS 7 的本地邮件关联选择器的功能。

叶秀兰
2014/01/04
260
0
CombinationPickerController

CombinationPickerController 是图片选择器,使用 uicollection 视图。CombinationPickerController 可以选择单个图片,可以自定义你的相机,默认只支持人像。CombinationPickerController 兼...

叶秀兰
2014/08/27
522
0
ios UIcollection显示图片

xcode 7.3.1 UIcollection创建的item,cell来加载图片,加载到24个才会显示图片,怎么让他加载一个就显示一个图片

zxcasdqwe123
2016/08/18
51
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部