UICollectionView 自定义组头组尾的XIB方法
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方法相关推荐
- iOS之UITableView组头组尾视图/标题悬停
最近笔者在公司的iOS开发中,有一个iOS开发同事跑来问了两个问题:1.给UITableView设置了组头和组尾视图,但是一直显示不出来?2.UITableView的section的header和fo ...
- iOS 设置tableview组头组尾的背景色
直接设置UITableViewHeaderFooterView的backgroundView.backgroundColor或者的backgroundColor,都是没有用的,马克一下设置的table ...
- tableViewCell、collectionViewCell、组头组尾等总结
使用 xib 方式自定义 cell tableV iew 使用代码方式自定义 cell coll ectionView 使用代码方式自定义 cell 原型 cell 静态cell 使用xib方式自定义 ...
- UICollectioView的组头和组尾的高度不同设置
有些需要组头和组尾的高度不同,在layout中设置导置所有的组头和组尾的高都一样,刚做了个项目正好有这个需要,代码如下 - (CGSize)collectionView:(UICollectionVi ...
- 强大的分组SectionListView, 支持自定义组头布局和分组的内容布局, 组头有挤压效果
效果与系统的联系人分组效果类似,组头有挤压效果.但是不同的是,SectionListView支持每组的组头布局自定义,每组的内容布局也可以自定义. 效果图如下: 自定义Adapter: package ...
- iphone开发之表格组件UITableView的使用(二)如何分组展示数据并添加组头和组尾描述
1.在实现UITAbleView数据源协议即UITableViewDataSource内的如下方法中: // 此方法用于告诉哪个UITableView的每一组的每一行显示什么内容 -(UITable ...
- iOS自定义组与组之间的距离以及视图
iOS自定义组与组之间的距离以及视图 //头视图高度 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(N ...
- iOS UITableView 指定组头悬停位置
悬停位置 当UITableView占满屏幕时 组头默认是在顶部悬停 在机型 iPhone X 上 会被顶部的刘海给挡住 这效果显然不能直视~ 理想的效果是: 在导航下方悬停 (导航是个自定义的视图 带 ...
- Xamarin 设置ListView组头的高度
1.自定义组头Cell,重写绑定内容改变事件,在该事件中设置组头的高度. public class GroupCe11 : ViewCe11{protected override void OnBin ...
最新文章
- AI一分钟 | 都还没普及,智能音箱就开始急匆匆推广告了;全球路况最差的莫斯科,倒成了无人驾驶的绝佳训练场
- r语言和python-r语言和python的详细对比
- 使用shiro框架,注销问题的解决
- [mark] some free templates sites
- mysqldump+系统计划任务定时备份MySql数据
- date在java的那个包_Java—包装类、Date和SimpleDateFormat、Calendar类
- 我们应当怎样做需求分析
- pixhawk启动脚本分析
- python并行计算
- DI卡件/3503E/TRICONEX
- 没用完的手机流量是否清零?讨论+吐槽
- Codeforces 1744B. Even-Odd Increments
- STM32cubeIDE使用CCMRAM
- 知路,然后智行远;懂行,所以万业兴
- 量化机器人—马特炒币机器人
- Android Studio 内部字体大小修改
- 解决 Hyper-V R2 虚拟网卡影响网速变慢问题
- 总结5个比较好用的app开发工具
- 大裁员席卷阿里,P9 大咖连夜赠书,奋战 2 个月成功斩获 offer
- Lecture4 神经网络与反向传播(1)
热门文章
- [Windows] 迅雷 无修改 无限制 无视封锁
- 力推:无限制下载神器aria2
- 【沃顿商学院学习笔记】公益创业——01开始公益创业Starting a Social Enterprise
- 通过python刷android步数,使用 Python 修改微信/QQ/支付宝运动步数
- SDK “iphoneos“ cannot be located
- 谷歌(Chrome)浏览器丨插件安装教程
- Shell 脚本进阶,经典用法及其案例
- Centos文件夹目录中文变英文
- 大数据处理关键技术主要有五种,具体指的是什么?
- 微软服务器安装显卡驱动,微软虚拟机显卡及驱动的设置