码迷,mamicode.com
首页 > 其他好文 > 详细

UICollectionView(I)

时间:2018-08-02 11:29:02      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:通过   设置   div   ons   定义   info   self   xpath   nss   

UICollectionView 与 UITableView的异同

 相同点:

 

不同点:

① 动过代理和数据源方法来实现UI和数据填充的;

② 对Cell的重利用,实现了循环利用优化;

 

不同点:

① UITableView是系统自定义的竖直布局,只能竖直滚动,UICollectionView可以自由选择竖直布局和水品布局,分别为竖直滚动和水平滚动;

② UITableViewController的self.view == self.tableview;,但UICollectionViewController的self.view != self.collectionView;

③ UICollectionView的cell只能通过注册来确定重用标识符;

 

 

属性

滚动方向属性scrollDirection:

 1 //垂直滚动,表示Cell布局是从左往右,从上到下排列的布局
 2 //水平滚动,表示Cell方块布局是从上往下,从左到右排列的布局
 3 typedef NS_ENUM(NSInteger, UICollectionViewScrollDirection) {     
 4     UICollectionViewScrollDirectionVertical,  /*垂直滚动*/  
 5     UICollectionViewScrollDirectionHorizontal /* 水平滚动 */
 6 };
 7 
 8 
 9 //和UITableView不同,UICollectionView只能在这里设置顶部视图和底部视图的大小
10 
11 //设置为垂直滚动时,顶部和底部视图的宽度为UICollectionView的宽度,无法设置
12 
13 //设置为水平滚动时,顶部和底部视图的高度为UICollectionView的高度,无法设置

 

 

 

常用方法

 1 //向容器视图注册Cell视图,有2种方式,一种是类名注册,一种是Xib注册 
 2 - (void)registerClass:(Class)cellClass /* 视图类*/    forCellWithReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
 3 
 4 - (void)registerNib:(UINib *)nib /* Xib */    forCellWithReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
 5 
 6 //从缓存池中取出Cell视图对象,如果缓存池没有,自动调用alloc/initWithFrame创建
 7 - (UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier     forIndexPath:(NSIndexPath *)indexPath;
 8 
 9 //kind参数设置
10 NSString *const    UICollectionElementKindSectionHeader;/* 顶部视图用这个 */
11 NSString *const    UICollectionElementKindSectionFooter;/* 底部视图用这个 */
12 
13 
14 //向容器视图注册顶部视图或者底部视图,有2种方式,一种是类名注册,一种是Xib注册
15 - (void)registerClass:(Class)viewClass 
16         forSupplementaryViewOfKind:(NSString *)kind /* 参考上面 */    withReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
17 
18 - (void)registerNib:(UINib *)nib    forSupplementaryViewOfKind:(NSString *)kind /* 参考上面 */    withReuseIdentifier:(NSString *)identifier;/* 绑定标识 */
19 
20 /* 从缓存池中取出顶部视图对象或者底部视图对象,如果缓存池没有,自动调用alloc/initWithFrame创建 */
21 - (UICollectionReusableView *)dequeueReusableSupplementaryViewOfKind:(NSString *)kind    withReuseIdentifier:(NSString *)identifier     forIndexPath:(NSIndexPath *)indexPath;    

 

 

 

UICollectionViewDelegate的代理方法

1 // 选中Cell方块时调用
2 - (void)collectionView:(UICollectionView *)collectionView    didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
3 
4 //取消选中Cell方块时调用
5 - (void)collectionView:(UICollectionView *)collectionView    didDeselectItemAtIndexPath:(NSIndexPath *)indexPath;

 

 

UICollectionViewDataSource数据源方法

 1 @required
 2 //设置容器视图各个组都有多少个Cell
 3 - (NSInteger)collectionView:(UICollectionView *)collectionView    numberOfItemsInSection:(NSInteger)section;
 4 
 5 //设置Cell,类似于UITableViewCell的设置 
 6 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView    cellForItemAtIndexPath:(NSIndexPath *)indexPath;
 7 
 8 
 9 @optional
10 //容器视图有多少个组,默认返回1
11 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
12 
13 //设置顶部视图和底部视图,通过kind参数分辨是设置顶部还是底部
14 - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView    viewForSupplementaryElementOfKind:(NSString *)kind    atIndexPath:(NSIndexPath *)indexPath;

 

 

UICollectionViewDelegateFlowLayout的代理布局方法

1 // 设置每个方块的尺寸大小
2 - (CGSize)collectionView:(UICollectionView *)collectionView    layout:(UICollectionViewLayout*)collectionViewLayout    sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
3 
4 //设置方块视图和边界的上下左右间距
5 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView    layout:(UICollectionViewLayout*)collectionViewLayout    insetForSectionAtIndex:(NSInteger)section;

 

 看图示:

技术分享图片

 

UICollectionView(I)

标签:通过   设置   div   ons   定义   info   self   xpath   nss   

原文地址:https://www.cnblogs.com/EchoHG/p/9405130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!