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 的方式进行加载,必须使用系统原有的类名来创建。

最终运行效果图

转载于:https://www.cnblogs.com/jiwei2009/p/6002129.html

UICollectionView 自定义组头组尾的XIB方法相关推荐

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

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

  2. iOS 设置tableview组头组尾的背景色

    直接设置UITableViewHeaderFooterView的backgroundView.backgroundColor或者的backgroundColor,都是没有用的,马克一下设置的table ...

  3. tableViewCell、collectionViewCell、组头组尾等总结

    使用 xib 方式自定义 cell tableV iew 使用代码方式自定义 cell coll ectionView 使用代码方式自定义 cell 原型 cell 静态cell 使用xib方式自定义 ...

  4. UICollectioView的组头和组尾的高度不同设置

    有些需要组头和组尾的高度不同,在layout中设置导置所有的组头和组尾的高都一样,刚做了个项目正好有这个需要,代码如下 - (CGSize)collectionView:(UICollectionVi ...

  5. 强大的分组SectionListView, 支持自定义组头布局和分组的内容布局, 组头有挤压效果

    效果与系统的联系人分组效果类似,组头有挤压效果.但是不同的是,SectionListView支持每组的组头布局自定义,每组的内容布局也可以自定义. 效果图如下: 自定义Adapter: package ...

  6. iphone开发之表格组件UITableView的使用(二)如何分组展示数据并添加组头和组尾描述

    1.在实现UITAbleView数据源协议即UITableViewDataSource内的如下方法中: //  此方法用于告诉哪个UITableView的每一组的每一行显示什么内容 -(UITable ...

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

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

  8. iOS UITableView 指定组头悬停位置

    悬停位置 当UITableView占满屏幕时 组头默认是在顶部悬停 在机型 iPhone X 上 会被顶部的刘海给挡住 这效果显然不能直视~ 理想的效果是: 在导航下方悬停 (导航是个自定义的视图 带 ...

  9. Xamarin 设置ListView组头的高度

    1.自定义组头Cell,重写绑定内容改变事件,在该事件中设置组头的高度. public class GroupCe11 : ViewCe11{protected override void OnBin ...

最新文章

  1. AI一分钟 | 都还没普及,智能音箱就开始急匆匆推广告了;全球路况最差的莫斯科,倒成了无人驾驶的绝佳训练场
  2. r语言和python-r语言和python的详细对比
  3. 使用shiro框架,注销问题的解决
  4. [mark] some free templates sites
  5. mysqldump+系统计划任务定时备份MySql数据
  6. date在java的那个包_Java—包装类、Date和SimpleDateFormat、Calendar类
  7. 我们应当怎样做需求分析
  8. pixhawk启动脚本分析
  9. python并行计算
  10. DI卡件/3503E/TRICONEX
  11. 没用完的手机流量是否清零?讨论+吐槽
  12. Codeforces 1744B. Even-Odd Increments
  13. STM32cubeIDE使用CCMRAM
  14. 知路,然后智行远;懂行,所以万业兴
  15. 量化机器人—马特炒币机器人
  16. Android Studio 内部字体大小修改
  17. 解决 Hyper-V R2 虚拟网卡影响网速变慢问题
  18. 总结5个比较好用的app开发工具
  19. 大裁员席卷阿里,P9 大咖连夜赠书,奋战 2 个月成功斩获 offer
  20. Lecture4 神经网络与反向传播(1)

热门文章

  1. [Windows] 迅雷 无修改 无限制 无视封锁
  2. 力推:无限制下载神器aria2
  3. 【沃顿商学院学习笔记】公益创业——01开始公益创业Starting a Social Enterprise
  4. 通过python刷android步数,使用 Python 修改微信/QQ/支付宝运动步数
  5. SDK “iphoneos“ cannot be located
  6. 谷歌(Chrome)浏览器丨插件安装教程
  7. Shell 脚本进阶,经典用法及其案例
  8. Centos文件夹目录中文变英文
  9. 大数据处理关键技术主要有五种,具体指的是什么?
  10. 微软服务器安装显卡驱动,微软虚拟机显卡及驱动的设置