显示数据列表 大家通常使用的是UITableView
 不用说TableView 是大家的首选。在iOS6之前这也是必选。但是伴随着APP的成长一起都在变化目前更多的呈现一种块状的显示效果、之前的行式显示效果大家都已见的太多了。接下来大家和我一起来看看另外的一种控件 - UICollectionView

1、实例化
2、自动布局
3、横向
4、纵向
5、协议
6、Cell

一、实例化
   UICollectionView 的实例化和其它控件存在一个不同的地方。
   init
   initWithFrame:
   initWithFrame: collectionViewLayout:
   前面的两个实例化方法是从父类继承来的,在实际使用中不使用如果使用程序会报错。
   通常使用第三个方法这是因为在实例化UICollectionView 是需要指定一个布局,UICollectionView 呈现时是根据这个布局对象来显示。
二、自动布局
    AutoLayout 这个很简单将 UICollectionView 实例的 translatesAutoresizingMaskIntoConstraints 属性设置为NO 然后添加相应的约束。
    
三、布局(UICollectionViewFlowLayout) 这里将横向和纵向布局放在一起
   UICollectionView 显示布局非常灵活凡是UITableView 能够显示的它都能显示。
   由于CollectionView 是块状布局决定了它能够实现横纵布局, 这两种布局苹果官方已经封装好。同时还有更多的布局方式可以通过继承 UICollectionViewFlowLayout 自定义。
   横向布局和纵向布局主要是通过布局实例对象的属性scrollDirection 来控制,    UICollectionViewScrollDirectionVertical/UICollectionViewScrollDirectionHorizontal 分别代表纵向布局和横向布局默认是纵向布局。

当然在横向布局的时候需要注意的是UICollectionView 的高度。如果高度设置不合理就不能显示出横向滚动的效果。
   布局实例可以在实例化的时候就设置好相应的显示效果也可以通过 UICollectionViewDelegateFlowLayout 协议灵活实现。
   
四、协议(UICollectionViewDataSource,UICollectionViewDelegate)
   主要是数据源和动作协议
   数据源协议主要控制数据的显示
   动作协议主要是捕捉用户的相关操作和动画。
   这里需要注意一个小问题:数据能够正常显示但UICollectionView 没有滑动效果。这时将 UICollectionView 实例的 alwaysBounceHorizontal 属性值设置成YES 如果是纵向滚动就是 alwaysBounceVertical。
   
五、Cell
   使用UICollectionView 显示数据必须使用registerClass或者registerNib 注册对应的Cell 目的是便于重用同时避免了每次显示都要重新实例化,在UICollectionView 中默认必须注册Cell。

对于UITableView则可以不必注册,建议大家在使用UITableView 时最好是先注册Cell,这样做的好处大家应该能知道吧?

总结:
   UICollectionView 在显示数据上表现的灵活性和美观 都要优于UITableView 但是在有些方面还是相对于UITableView 来说还是有所不足例如:编辑、分组索引 、多选.

最新文章

  1. Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
  2. 享元模式 - Flyweight
  3. 使用Visual Studio扩展插件Visual assist X给代码插入注释模板
  4. 自定义一个只显示年月的DatePicker(UIDatePicker无法实现年月显示)
  5. WPF的"路径标记语法"
  6. 团队项目——站立会议 DAY8
  7. ionic导航之后返回功能的说明
  8. day4----json的简单实用
  9. HDU 4793 Collision --解方程
  10. 10.Android之ProgressDialog进度对话框学习
  11. file的getPath getAbsolutePath和getCanonicalPath的不同
  12. 浏览器URL访问网页具体发生了什么
  13. Hibernate各种主键生成策略2
  14. bat命令大全
  15. 关于require,require_once,include和include_once的区别
  16. asp于Server.MapPath用法
  17. 3 Eclipse 查看不了源码
  18. nginx 模块配置
  19. spring cloud 学习
  20. Kubernetes – Ingress

热门文章

  1. 了解linux内存管理机制(转)
  2. 安装node.js+express for win7的Web开发环境配置
  3. 在MFC中添加用户自定义消息
  4. Java NIO入门
  5. Oracle数据库十大常见性能问题
  6. 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
  7. 图片延迟加载(lazyload)的实现原理
  8. Kali Linux 网络扫描秘籍 翻译完成!
  9. Add Binary
  10. 常用的Linux可插拔认证模块(PAM)应用举例(一)