UICollectionView的加载方式和Tableview很像,基本上加载的方法都差不多,尤其是它的数据源的方法和代理方法基本上类似,只不过是名字上有点细微的差别而已。这里面不赘述。

1. UICollectionView为什么要自定义组头和组尾呢?原因是因为如果不自定义,系统会复用Cell,导致加载的控件出现重复的现象。

如下图: 绿色的view为组头,通过视图发现,组头上面的控件出现了叠加的现象。

如何解决上面复用的问题,使用initWithFrame的初始化视图的方法,当cell上的view创建显示的时候,创建控件。

解决思路:

a. 自定义组头方法

b. 组头view显示的时候就创建控件

c.传入数据 重写Set 方法

最终运行效果

由于这个自定义方法很简单这里就不详细说明了。

2.下面重点说的是如何使用xib的方法来创建组头或者组尾的控件。

这里面以创建一个尾部视图控件为例:

1.手动创建一个空的xib,继承自ReusableViw

2.创建好xib 一定要重用标识符

3.在.h文件中创建一个自定义的IndexPath属性

4..m文件中重写该方法 这里面的Lable是Xib控件中的lable

5.到现在为止已经创建好了自定义的尾视图文件和xib了,那么回到主函数中去实现加载的方法

注意:组头和组尾的设置Frame必须要在代理方法中去实现,如果不在代理方法中,设置是无效的具体设置如下图

6.由于是代码创建的collectionview,所以必须要注册

a.注册组头的方法 在viewdidload中实现如下代码

b.注册组尾的方法

首先这里面有一个bug ,如果你按照上面的注册方法注册组尾的话是不可能实现的,因为组头不是xib,所以可以用上面的方法,而我们的组尾的方法是通过xib的方式实现的,所以要加载xib文件。

这里面有个小bug 先上图

当使用nib的方式注册,仿照组头的创建方式注册的时候,会发现弹出⚠️,运行的时候会报错。

原因是找不到组尾的初始化的方法,如何解决呢?

如下图:

也就是说,当我使用XIB方式进行创建组尾或者组头的时候,不能使用  类名+Class 的方式进行加载,必须使用系统原有的类名来创建。

最终运行效果图

UICollectionView 自定义组头组尾的XIB方法的更多相关文章

  1. iOS之UITableView组头组尾视图/标题悬停

    最近笔者在公司的iOS开发中,有一个iOS开发同事跑来问了两个问题:1.给UITableView设置了组头和组尾视图,但是一直显示不出来?2.UITableView的section的header和fo ...

  2. iOS自定义组与组之间的距离以及视图

    iOS自定义组与组之间的距离以及视图 //头视图高度 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(N ...

  3. iOS监听tableView组头切换事件

    - (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSIntege ...

  4. 关于MPEG2中的图像序列和图像组头GOP

    图像序列 图像序列是由图像组构成的,是随机存取段落. sequence_header_code – The sequence_header_code is the bit string ‘000001 ...

  5. 基于Activiti5.15.1 自定义用户、组(User,Group)实现

    基于Activiti5.15.1 自定义用户.组(User,Group)实现 本人刚接触Activiti,最近工作中需要将Activiti中原有的用户,组(ACT_ID_USER,ACT_ID_GRO ...

  6. 使用 collectionView 实现表头,区头,区尾

    UICollectionView 的使用是跟表的使用是一样,瀑布流的布局会比表的效果更好,这里说一下 collectionView 设置表头, 区头,区尾 设置表头可以约束 collectionVie ...

  7. Android ListView相关 头和尾 headView footerView

    ListView还可以添加头和尾部,而这头和尾就是View对象, 可以使用listView.addHeadView(view)方法和listView.addFootView(view)方法分别添加头和 ...

  8. 使用 Spring RestTemplate 调用 rest 服务时自定义请求头(custom HTTP headers)

    在 Spring 3.0 中可以通过  HttpEntity 对象自定义请求头信息,如: private static final String APPLICATION_PDF = "app ...

  9. 【京东账户】——Mysql/PHP/Ajax爬坑之页头页尾加载

    一.引言 实现京东的账户项目,有一个小功能,页头页尾加载.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.实现 原理: 用php文件分别写一个的页头和一个页尾,放在前后两个div里. ...

随机推荐

  1. Unity3D设计原则

    原则1:单一职责 原则2:里氏替换原则(子类扩展但不改变父类功能) 原则3:依赖倒置原则 原则4:接口隔离原则 原则5:迪米特法则(最少知道原则) 原则6:开闭原则 原则1:单一职责原则 说到单一职责 ...

  2. UIPickerView理解

  3. HDU 5833 Zhu and 772002(高斯消元)

    题意:给n个数,从n个数中抽取x(x>=1)个数,这x个数相乘为完全平方数,求一共有多少种取法,结果模1000000007. 思路:每个数可以拆成素数相乘的形式,例如: x1 2=2^1 * 3 ...

  4. STL之list

    list是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块,一个前驱指针和一个后驱指针.它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有 ...

  5. 一般处理程序如何获取session值

    1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState ...

  6. webdriverAPI-Java

    1.1   下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方UserGuide:http://seleniu ...

  7. 从零开始编写自己的C#框架(3)——开发规范(转)

    由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直 ...

  8. final 评论 I

    新蜂团队:俄罗斯方块界面设计给人眼前一亮的感觉,很喜欢他们界面的颜色搭配.功能上实现了俄罗斯方块的基本功能,并且没有bug.最重要的是游戏有自己的创新点在里面,很喜欢游戏的瞄准功能.总的来说项目完成的 ...

  9. Clustering Methods: Benefits and Limitations

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION

  10. 初探Redis+Net在Windows环境下的使用

    Redis官网地址:https://redis.io/:Redis官方暂时不支持Windows环境,但是MicroSoft Open Tech group开发了一个Windows平台下运行的版本. R ...