ios UICollectionViewController集合视图(二)

创建集合视图

    与表格一样,集合视图也有两种用法,一种是直接使用集合视图,另一种是使用系统预置的控制器。开发者可以构建一份单独的集合视图实例,并把它添加到界面中,也可以使用更为方便的UICollectionViewController对象,该对象是个预先制备好的视图控制器,其中带有一份集合视图。这个控制器会自动把视图的数据源及委托设置成该控制器本身,而且还会宣称自己遵从两个相关的协议。这样的集合视图控制器既可以用作其他容器(比如导航控制器、标签栏控制器、分栏视图控制器、页面视图控制器等)的子控制器,也可以独立展示出来。    

1、通过控制器使用集合视图

构建控制器的时候,首先要创建并设置好布局对象,然后分配的实例,并用准备好的布局对象初始化它:
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    layout.scrollDirection = UICollectionViewScrollDirectionVertical;
    MyCollectionViewController *mcc = [[MyCollectionViewController alloc] initWithCollectionViewLayout:layout];
上面的代码采用UICollectionViewFlowLayout类就行了。集合视图里的许多布局任务,他都能够完成。我们可以用它构建出基本的界面。在默认的状态下,每个区段都会根据屏幕内容自行调整该区段中的条目,而开发者则可以指定区段之间、线条之间以及条目之间的空白尺寸等。
UICollectionViewFlowLayout类的父类叫做UICollectionViewLayout,它是个可供继承的抽象类,不过,绝大部分情况下都不应该从它继承子类,而是应该从UICollectionViewFlowLayout继承,开发者并不需要直接使用这个父类。

2、直接使用集合视图

如果想建立嵌入其他视图之中的集合视图,就先创建好布局对象,然后布局对象来创建集合视图,并设置数据源及委托。UICollectionViewFlowLayout对象会使用开发者经由delegate属性赋给集合视图的委托:
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    layout.scrollDirection = UICollectionViewScrollDirectionVertical;
    UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
    collectionView.delegate = self;
    collectionView.dataSource = self;

3、数据源与委托

管理集合视图的视图控制器宣称自己实现了UICollectionViewDataSource及UICollectionViewDelegate协议。但与表格不同的是,如果使用流式布局,那么控制器还会宣称自己实现了UICollectionViewDelegateFlowLayout协议。
UICollectionViewDelegateFlowLayout协议通过一系列回调方法来给集合视图的布局对象提供布局信息。集合视图的delegate遵从了这一协议,也就是说,我们无须另外用一个名为delegateFlowLayout的属性来表示实现了该协议的对象。
与表格视图一样,数据源也负责提供每个区段及区段内每个条目的信息,并根据需求 返回对应 单元格以及集合视图上面的其他部件。委托负责处理用户的操作,并对用户的改动请求作出有效的回应。而 UICollectionViewDelegateFlowLayout则负责提供每个区段的详细布局信息,在大多数情况下,它所规定的方法都是可选的。流式布局具体看下一个博客。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值