【iOS bug记录】UICollectionviewCell刷新变得这么莫名其妙?
项目是一个即时聊天的社交软件,聊天流采用的是UICollectionView,随着进度的完善,发现一个特别的bug,UICollectionviewCell的复用,并没有直接insert进去,而是出现了莫名奇妙的插入方式,
这不是我的图,这是我在网上找到的,跟我的效果一样一样的。link the image
起初我以为是动画出了问题,导致keyboard跟UICollectionView起了冲突,可后来发现,关闭了所有的动画也不起作用。折腾了一天,终于在stackOverflow上找到了答案。
https://stackoverflow.com/questions/56584816/swift-uicollectionview-cell-displayed-scrolled-in-to-the-view-incorrectly-when-k
这位大佬的情况跟我的一样一样的,可他没有给出具体的解决办法,只是提出了一些宝贵建议。
After long investigation I noticed that the same phenomen happens also at the bottom in particular cases. I am not sure it it is bug or custom layout is necessary, but with the simple flow layout I solved the issue by setting collectionView contraints beyound the display edge.
This force to call displaying cell earlier and gives some time to lay cell approprietely even hide keyboard animation is used. Of coarse collectionView top and bottom contentInset has to be set in viewDidLoad and handle any contentInset change during runtime accordingly
Hope it help!
抽重点:设置collectionView限制超出显示边缘。这迫使调用显示单元格更早,并给一些时间,以奠定适当的单元格,甚至隐藏键盘动画使用。顶部和底部的contentInset必须在viewDidLoad中设置,并在运行时相应地处理任何contentInset的变化
(我做的是,将底部约束加+1,超出父类的bottom,这样解决了collectionview莫名其妙的插入,但是这样却写死了collectionview的约束,无法使列表跟随键盘改变contentInset。如果约束<1,又会出现奇怪问题,我也不知这是为何。)
经过一番折腾之后,我发现通过主线程延时更改collectionview的contentInset也能有效解决列表的刷新问题。
补充:1、如何解决UICollectionView进行reload时,闪烁问题?
傻逼方法:reload之前先设置alpha = 0,结束后alpha = 1
// self.messagesCollectionView.reloadData()
// self.messagesCollectionView.performBatchUpdates({
// }) { (finish) in
// self.messagesCollectionView.alpha = 1
// }
补充 :2、解决UITableView或UICollectionView中cell影响UIButton的高亮效果
解决办法:
tableView.delaysContentTouches = false
【iOS bug记录】UICollectionviewCell刷新变得这么莫名其妙?的更多相关文章
- 微信小程序bug记录与解决
微信小程序bug记录 textarea textarea在模拟器上没有padding,可是在真机上会自带padding,而且在外部改不了,并且在安卓和IOS上padding还不一样 第一张图是在开发工 ...
- IOS 开发下拉刷新和上拉加载更多
IOS 开发下拉刷新和上拉加载更多 简介 1.常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTTableViewrefresh (3)AH3DPullRefresh ( ...
- 【bug记录】OS Lab3 踩坑记
OS Lab3 踩坑记 Lab3在之前Lab2的基础上,增加了进程建立.调度和中断异常处理.其中测试包括进程建立以及进程调度部分. 由于是第一次做bug记录,而且是调试完bug后再做的记录,所以导致记 ...
- 李洪强iOS开发之 - 指定刷新tableview的某一组
李洪强iOS开发之 - 指定刷新tableview的某一组
- BUG 记录:移位运算与扩展欧几里得算法
BUG 记录:移位运算与扩展欧几里得算法 起因 上个月就开始打算用C++写一个ECC的轮子(为什么?折磨自己呗!),奈何自己水平有点差,拖到现在才算写完底层的大数运算.在实现欧几里得算法的时候,我开始 ...
- iOS 7.0.2 的bug记录
在iOS 7.0.2 版本上,如果从主屏幕进入webapp且webapp进入全屏模式,那么alert和修改window.location到某产品对应的itunes下载页面则无效. 可参考下面的代码示例 ...
- iframe ios中h5页面 样式变大
实际项目开发中,iframe在移动设备中使用问题还是很大的,说一说我的那些iframe坑 做过的这个后台管理框架,最开始的需求是PC,但随着业务需要,需要将项目兼容到ipad,后台的框架也是使用的开源 ...
- 【bug记录】OS Lab4 踩坑记
OS Lab4 踩坑记 Lab4在之前Lab3的基础上,增加了系统调用,难度增加了很多.而且加上注释不详细,开玩笑的指导书,自己做起来困难较大.也遇到了大大小小的bug,调试了一整天. 本文记录笔者在 ...
- H5开发过程中修复的bug记录
从2016年8月1日开始真正意义上的修复bug,也是自己开发之路的开端,希望在这里记录自己修bug过程中遇到的问题及解决方法,待能够自己开发需求的时候,计划记录开发新需求过程中遇到的问题,并且记录自己 ...
随机推荐
- 深入浅出Spring(三)
我为大家简单介绍了一下Spring框架核心内容中的IoC,接下来我们继续讲解另一个核心AOP(Aspect Oriented Programming),即面向切面编程. 1.OOP回顾 在介绍AOP之 ...
- 你真的了解foreach吗?
引言 有C#基础的,当问到循环有哪些,会毫不犹豫的说出的for.do while.foreach及while这几种,但是到具体实际开发中,我们遇到一些问题,比如:到底选择哪种?为什么选择这种?哪种好像 ...
- vue使用tips
1. native修饰符可以用来绑定原生事件 2. destroyed在列表重渲染时,销毁的列表项会调用. 3. 并不是所有的数据都适合放入vuex 4. 子组件mounted先于父组件发生. 5. ...
- ios开发之block的使用,及注意事项
转自:http://my.oschina.net/u/1432769/blog/390401 Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于 ...
- 信鸽推送Push API
目录 信鸽推送 push API 0. 基本 push 1. 根据 token list,推送到android和ios 2. 推送到android和ios 所有用户 信鸽推送 push API 参考: ...
- Nginx(http协议代理 搭建虚拟主机 服务的反向代理 在反向代理中配置集群的负载均衡)
Nginx 简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开 ...
- [TimLinux] WireShark 安装篇——CentOS7
1. 下载 libpcap: http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz cmake: https://github-production- ...
- HDU-1698-----Just Hook
In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroes. T ...
- Pyhton表白代码——浪漫圣诞节
圣诞节即将到了,所以这回通过turtle模块来编写一个表白的小程序 开发时间:2019-12-15 开发工具:Sublime 开发模块:turtle 这里用到了turtle库的相关知识,如果不熟悉可以 ...
- 记录XunSearch(讯搜)的使用教程步骤(CentOS7下)
一.安装编译工具 yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel ...