美文网首页
UICollectionView的使用(1)--简单介绍

UICollectionView的使用(1)--简单介绍

作者: 雅之上善若水 | 来源:发表于2017-07-20 14:41 被阅读32次

    传送门:

    因为UICollectionView 和 UITableView有相识性,所以简单的比较.

    1. 简单介绍

    UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局.如果是垂直展示,直接使用UITableView 即可,而横向展示使用UICollectionView.

    2. 父类

    UICollectionView 和UITableView 都是 UIScollView 的子类.

    3. 样式

    使用UITableView时,其有两种样式

    typedef NS_ENUM(NSInteger, UITableViewStyle) {
        UITableViewStylePlain,          // regular table view
        UITableViewStyleGrouped         // preferences style table view
    };
    

    而UICollectionView 通过,UICollectionViewLayout来设计样式.

    4. 协议

    UITableView 必须实现UITableViewDataSource,UITableViewDelegate

    // this represents the display and behaviour of the cells.
    @protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>
    @end
    
    // this protocol represents the data model object. as such, it supplies no information about appearance (including the cells)
    @protocol UITableViewDataSource<NSObject>
    @end
    

    �两个协议部分都有默认值,而必须完成的协议方法是2个

    @protocol UITableViewDataSource<NSObject>
    
    @required
    // 每个Section中 行数
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
    
    // Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
    // Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)
    // 具体每个cell的布局内容
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
    @end
    

    使用UICollectionView 必须实现UICollectionViewDataSource,
    UICollectionViewDelegate, UICollectionViewDelegateFlowLayout这三个协议。

    @protocol UICollectionViewDataSource <NSObject>
    @end
    
    @protocol UICollectionViewDelegate <UIScrollViewDelegate>
    @end
    
    @protocol UICollectionViewDelegateFlowLayout <UICollectionViewDelegate>
    @end
    
    

    �3个协议部分都有默认值,而必须完成的协议方法是2个

    // 每个Section中Item的个数
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
    
    // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
    // 具体每个Cell的布局
    - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
    

    5. 组成部分

    UICollectionView就是一个GridView,标准的UICollectionView包含三个部分

    UICollectionViewCell : 用于展示内容的主体. 其实UICollectionReusableView的子类.
    
    Supplementary Views : 追加视图 ,每个Section的Header/Footer .是UICollectionReusableView,是UIView的子类.
    
    Decoration Views :装饰视图 , 这是每个section的背景 .这个自定义的UIView. 这个和数据毫无关系.所以并不在UICollectionViewDataSource中,而是在UICollectionViewLayout中.
    
    

    好的博客:

    相关文章

      网友评论

          本文标题:UICollectionView的使用(1)--简单介绍

          本文链接:https://www.haomeiwen.com/subject/hmndkxtx.html