9.UICollectionView增强

来源:互联网 发布:淘宝店铺装修基础版 编辑:程序博客网 时间:2024/06/07 06:41

1.UICollectionView仿UITableView

   UITableView简单来说,就是一个可以滚动表格界面

  这个表格界面中有什么特点?

  

   UITableView在初始化的时候,需要设置两种样式?

  1. 普通样式

  2. 分组样式

 

  两种样式的区别?

   1. 有头标签

     普通样式- >头标签始终处于屏幕上方,至到被下一个替代

     组样式—>头标签随着屏幕移动而移动

   2. 没有头标签

     普通样式 —>没有区别

     组样式—>组和组之间有间隔

  无非就是展现一行行的数据

 

 

 

 

 1.1注意点:

  1. cell下方的线条,UITableView是默认就有的

    想再UICollectionView中也有,需要自己添加,item定义一个背景颜色为黑色的view长为item的长高为1就可以

 

  2.如何让item的宽跟屏幕同宽?

    代码设置

 

  3.既然要仿UITableView,UITableView中有的特点就都要有

    分组样式已经实现,只需要设置头尾就可以

 

    带头标签的普通样式该如何去做—>

 

      self.flowLayout.sectionHeadersPinToVisibleBounds = YES;

   self.flowLayout.sectionFootersPinToVisibleBounds = YES;

    如果以后一个控件,要求尾部也固定显示在界面上,UICollectionView

 

   4. 修改头尾的大小

     self.flowLayout.headerReferenceSize =CGSizeMake(0, 200);

//    self.flowLayout.footerReferenceSize =CGSizeMake(0, 300);

    

 

2. UICollectionView仿UIScrollView实现无限轮播器

 

   2.1UICollectionView进行制作:

     1. UICollectionView大小设定为多大?屏幕一样大

      UICollectionViewController

   2.2item中控件数量比较少,还自定义一个UIView显得太过麻烦

      所以通常,给控件设置一个tag ,然后通过viewWithTag方法获取控件

 

 

   2.3分页功能 UIScrollView中学的

      这个属性归UIScrollView拥有

     

      想让其他的类,也拥有分页效果需要怎么做?继承

 

   2.4 无限滚动

    滚动的次数由谁决定?

     有返回的item的数量进行决定 ,所以可以通过改itme进行滚动

   2.5由于是第一个数据,所以不能往左滚

       让它不是第一个数据

      scrollTo方法—>滚动到某一个位置

     

   

3. 相册效果

 

1.itemSize变大就可以

      2.控件最终运行在界面上,需要获取到具体的某一个item然后才能让它变大

     3.并且,这个item还必须是刚好展现在界面上的

 

   3.1自定义layout

      通常在UICollectionView中自定义layout的时候,不会去继承UICollectionViewLayout,因为在这里面没有itemSize属性,也没有最小边距等属性

      所以通常会继承UIColllectionViewFlowLayout

 

   3.2初始化的方法,init中写是否可以,可以!但是如果写在Init方法中

      那么layout的初始化就必须使用代码实现,对应的UICollecionView也必须使用代码

       将会变得非常非常麻烦

   

      学习系统layout自带的一些方法

 

 

    1.如何获取到当前界面中看到的Item

    2.得到看到的item怎么改变

    3.控件改变了,但是在滚动的时候,需要界面刷新,should方法等于YES

    4.滚动停止的时候,让距离中间最近的控件显示在中间

 

 

4. 瀑布流

 

   1.知道了如何计算单独itemframe就可以了

 

 

 

 

 

   1.知道界面中的item都需要变化,所以使用layoutAttributesForElementsInRect

    返回的是改变后的item

   2.获取上方控件的最大的Y

    使用一个数组,用来保存上方控件的最大的Y

    数组的长度应该是多少?

 

 

 

   需求驱动开发,需要什么再去做什么

 

   

5.添加下方标题的时候,layout的布局,如果加了尾部,需要在自定义布局中进行添加

      // 1.获取footerView不能使用 self或者super调用方法

    // 必须使用UICollectionViewLayoutAttributes

    // 2.创建indexPathForRow对头尾来说需要使用 forRow

//3. Y值一定要在item的最下吗

 

 

6.界面滚动在最下方,加载数据

   需要知道界面滚动的状态

  1.UIScrollView如何知道界面在滚动?如果在界面滚动的时候,我们做事情?

  2. UICollectionView它的父类就是UIScrollView

  3.调用父类中的代理方法 delegate属性

 

 重点:加载数据刷新后,明明footerView只有一个,为什么会报两个的错误

 

0 0
原创粉丝点击