首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》19.7 深入练习:UICollectionView

关灯直达底部

UICollectionView与UITableView非常相似:

•UICollectionView是UIScrollView的子类。

•与UITableViewCell类似,UICollectionView对象显示一组UICollection- ViewCell或其子类。

•UICollectionView具有数据源,负责提供UICollectionViewCell。

•UICollectionView具有委托,可以在委托方法中处理相关回调事件,例如选择了某一个UICollectionViewCell。

•UICollectionViewController与UITableViewController类似,UICollection- ViewController也是UIViewController的子类,其view是UICollectionView。

UICollectionView与UITableView的区别是,UITableView只能显示一列UITableViewCell,在大屏幕设备(如iPad)中有很大的局限性。UICollectionView则可以将UICollectionViewCell按任意方式布局,其中最常见的是网格布局(见图19-15)。

图19-15 使用UICollectionView的Homepwner

UICollectionView是如何布局UICollectionViewCell的?UICollectionView含有一个布局对象,负责控制每一个UICollectionViewCell的属性,包括位置和大小。UICollectionView的布局对象继承自一个名为UICollectionViewLayout的抽象类。如果需要将UICollectionViewCell按网格布局,则可以使用系统提供的UICollectionView- FlowLayout。但是,如果需要实现其他的布局方式,就必须创建UICollectionViewLayout的自定义子类。

图19-16 UICollectionView对象图示例

本书之前章节并没有子类化UITableViewCell,而是直接使用UITableViewCell。相反,UICollectionViewCell通常并不能满足需求——UICollectionViewCell也有contentView,但是与UITableViewCell不同,UICollectionViewCell的contentView在默认情况下没有任何子视图。因此,如果需要使用UICollectionView,通常还需要创建一个UICollectionViewCell子类。

了解了以上的内容后,读者就可以尝试使用UICollectionView了。最后,UICollectionViewCell也具有背景视图和选中状态下的背景视图(当UICollectionViewCell处于选中状态时,该视图会覆盖在背景视图上方)。