8.UIVollectionView

1.UICollectionView的简单介绍

  1.1 UICollectionView默认的背景颜色是黑的,

     而在stroyboard中显示白色,实际效果和视图界面中不一致

 

  1.2注意:

     1.2.1 以后使用UICollectionView,第一步先设置背景颜色

     1.2.2 它默认的界面就是空白的,没有任何内容

     1.2.3显示内容,UITableView非常类似

       1.设置数据源的代理

         1.1代码设置 view.dataSource = self

         1.2拖线

       2.实现数据源的协议

       3.实现方法

     1.2.4 UICollectionView它的Cell默认只能从原型cell中进行加载

    

  1.3item设置的时候一定要注意:

   一行上展现的item的个数,它是由系统计算获取的,没有办法进行具体个数设置,在设置属性的使用 CellSize MinSpacing设置一定要谨慎

   这里设置的是MinSpacing因为这个间距会根据一行展现控件个数而变化

   在开发中如果使用UIcollectionViewCell,设置间距和CellSize的时候 ,按照最小尺寸的屏幕进行设定

    开发中按照3.5英寸进行设定

   

 

2. 代码方式创建

 注意点:

  2.1UITableView中创建的时候分为普通样式和分组样式,这个样式是在初始化的时候就已经设定了

     UICollectionView同样道理,它也有自己样式,并且必须在初始化的时候进行设定

     默认UICollectionView它的样式是通过layout进行设定的,layout中默认有两种样式 flow 流水 custom自定义

    

     必须在初始化的时候,进行设置layout

     UICollectionView *collectionView =[[UICollectionView alloc]initWithFrame:CGRectZerocollectionViewLayout:flowLayout];

 

  2.2注册cell

    [collectionViewregisterClass:[UICollectionViewCell class] forCellWithReuseIdentifier:resueId];

 

 

  2.3 cell的设置,是通过layout进行设置的

 

    //设置cell的大小

    flowLayout.itemSize = CGSizeMake(100, 100);

   

    //设置距离屏幕的间距

    flowLayout.sectionInset =UIEdgeInsetsMake(20, 20, 20, 20);

   

    //设置itemitem之间的间距

    flowLayout.minimumInteritemSpacing = 10;

   

    //设置行与行之间的间距

    flowLayout.minimumLineSpacing = 30;

 

    UICollectionView它行间距以及item间距没有代理方法设置,只能通过layout的属性进行设置

   在初始化的时候就固定了,后面没有办法动态改变

 

 

 

3. 搭建界面的三种方式

  1. stroyboard

  2. 代码

  3. xib

 

 使用xib的方式创建cell,需要掌握的知识

  3.1.1 注册xib文件

   //第一个参数:代表nib文件的名字

    //第二个代表路径:只需要把mainBundle给它就可以

    UINib *nib = [UINibnibWithNibName:@"CZCollectionViewCell" bundle:[NSBundle mainBundle]];

   

   

    //一个参数根据Nib文件的名字获取一个UINib的对象

    //第二个参数重用的标识

    [self.collectionView registerNib:nibforCellWithReuseIdentifier:resuId];

 

  3.1.2 xib中设置cell的宽高是无效的

       需要通过layout进行设置 itemSize

 

 

 

4.UICollectionViewController的使用

  4.1

       //UITableViewControlelrself.view ==self.tableView

    //而在UICollectionViewControllerself.view !=self.collectionView

    NSLog(@"self.view -- %@--",self.view);

   

    NSLog(@"self.collectionView -- %@--",self.collectionView);

 

 

 4.2 item点击事件的响应

  事件响应,在delegate代理中

 - (void)collectionView:(UICollectionView*)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

 

  4.3 collectionView的滚动方向,只能设置一个方向,不能设置多个方向

   4.3.1 item的排列方式,collectionView的滚动方向所影响

   4.3.2设置最小的间隔minSpacing也受滚动方向影响

   4.3.2垂直滚动,头标签和尾标签宽度无效果—>屏幕宽度

   4.3.3水平滚动,头标签和尾标签高度无效果—>高度是屏幕的高度

 

  4.4 设置按钮的点击状态

        //collectionView中的item不可以被点击

    self.collectionView.allowsSelection = YES;

   

    //让多个Item响应点击

    self.collectionView.allowsMultipleSelection= YES;

 

   

5. 应用程序

 复习,自动布局

  复习代理

 复习 ,cell重用问题

 

  加载数据的时候,判断一下当前按钮是否被点击了,点击就被禁用,否则就显示

  由于现在加载数据没有办法判断,就要想办法

  由于跟数据相关,而这个数据就是CZApp

   CZApp中加一个成员属性用来判断它是否可以被点击

 

 

6. 动态加载

  6.1从广义上来说,就是根据一个条件,去判断改加载什么东西

  6.2从狭义上来说,系统选择加载的库,根据一定条件进行选择

  6.3动态加载动态运行虚拟器的一个运行时的判断

 

 

 动态加载数据

 动态数据加载:

 根据一定的条件 ,让加载的数据发生变化,就是动态加载数据;

  

 

 

7.页头和页尾(组头和组尾)

  1.组头组尾,使用的是同一个控件UICollectionReusableView

  2.默认高度起作用,但是控件属性都没有任何作用

    想要使用,需要实现UICollectionView的数据源方法

  - (UICollectionReusableView*)collectionView:(UICollectionView *)collectionViewviewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath*)indexPath

 

 

   3. 在使用的时候要注意

    头尾需要进行设置重用标识,而标识是不一样的,所以要根据头尾的标识进行判断

  //想找kind需要到 UICollectionViewFlowLayout类中,最上方查找

// UIKIT_EXTERNNSString *const UICollectionElementKindSectionHeader NS_AVAILABLE_IOS(6_0);

//UIKIT_EXTERNNSString *const UICollectionElementKindSectionFooter NS_AVAILABLE_IOS(6_0);

  

 

  4.头和尾,是自动重用的,根据一个标识

 

  5.传入数据,需要注意:声明属性的方法,这个方法只有一个参数

   而在UICollectionResuableView,设置数据需要知道是头尾,所以要传入两个参数

   所以这里只能定义方法,不能定义成员属性,

 

  6.自定义的UIView要继承自UICollectionReusableView

 

 

8.代码创建控件重点

 8.1.注意要注册class

 8.2 重写初始化方法的关键,在于系统初始化控件会调用哪个方法

 8.3 UICollectionView中注册的cell与使用的不符,不匹配

 8.4 要注意,在自定义控件中不能适用autolayout约束,否则会导致外面组的insets出问题

     cell中不能适用autolayout约束

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

瀑布流:

  1. 界面展现的数据不规则

  2. 数据无限加载

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值