czl0325 / ZLCollectionView

为应对类似淘宝首页,京东首页,国美首页等复杂布局而写的Collectionview。基于UICollectionView实现,目前支持标签布局,列布局,百分比布局,定位布局,填充式布局,瀑布流布局等。支持纵向布局和横向布局,可以根据不同的section设置不同的布局,支持拖动cell,头部悬浮,设置section背景色和自定义section背景view,向自定义背景view传递自定义方法。功能强大,超过Android的recyclerview,实现了电影选座等高难度的布局。
MIT License
1.16k stars 166 forks source link

瀑布流布局有bug,数据源多以及复杂情况下瀑布流最后几个X不对 #67

Closed ljssafe closed 1 year ago

ljssafe commented 1 year ago

最后几个布局在同一X上,成非瀑布流布局了,有点没看出来问题在哪 demo也是有这种问题 WX20230504-095748

ljssafe commented 1 year ago

补充一下:Sequence 排列下会有这种问题,minHeight 的排序情况则是正常的

czl0325 commented 1 year ago
image

我在demo上修改是正常的,你可否在我demo上修改下给我一份代码看看

ljssafe commented 1 year ago

那就这里,Sequence 排序方式下,瀑布流样式collection我仅仅只是多添加了一些额外数据源,底部最后几个就出现类似图片的样式问题

flowLayout.columnSortType = Sequence; 会有此问题,当然如果排序是minHeight 就不会有这种问题了,下面是我的数据源可以贴demo试试看会发生呢 WX20230519-092239

@"高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应",@"央广网北京7月26日消息(记者孙莹)据中国之声《新闻纵横》报道,“没名儿生煎”本是一家备受年轻人喜爱的网红小吃店,但红火生意的背后是拖欠二百多名员工工资、供货商货款等共计170多万元,且拒不执行法院判决的真相。昨天(25日)上午,北京市海淀区人民法院对“没名儿生煎”商标注册者北京缘和飞餐饮管理有限公司进行了强制执行。",@"普吉沉船事故已过去20天,遇难者大都已入土为安。然而,此次事故的幸存者却依旧沉浸在伤痛中。截至目前,已有18名遇难者的家属和两名幸存者,委托了公益律师团队向国内涉事旅行机构索赔,索赔对象包括携程、飞猪、马蜂窝等在线旅游平台,以及深之旅、浙江省国际合作旅行社、懒猫旅行社等产品提供商。" ,@"凯瑞德(8.540,0.31,3.77%)控股股份有限公司(下文简称“凯瑞德”,002072.SZ)自7月以来密集发布公告。 7月18日、19日,凯瑞德监事会主席饶大程、董事长张培峰因涉嫌操纵证券市场按被执行指定居所监视。7月20日,张培峰由于涉及某私募机构违规交易而被立案调查。7月24日,任飞、王腾、黄进益出具了告知函确认不再担任一致行动人。此次变动后,凯瑞德不再由张培峰、任飞、王腾、黄进益、郭文芳共同控制。由于股权较为分散,凯瑞德目前无实际控制人和控股股东(见表1)。旗下P2P平台爱钱帮良性清盘。北京爱钱帮财富科技有限公司(下文简称“爱钱帮”)于2014年上线运营P2P平台。爱钱帮提供房屋、车辆抵押以及消费金融业务,退出爱车贷、爱房贷、爱信贷等产品。旗下拥有全资子公司北京爱车帮资产管理有限公司(下文简称“爱车帮”)。", @"7月12日凌晨,欧洲杯决战上演——英格兰队开场1分57秒凭借卢克·肖的进球领先,下半场博努奇角球破门帮助意大利扳平比分。双方在经历加时苦战后,比分仍是1-1,只能进入残酷的点球大战——贝洛蒂的点球被皮克福德扑出,拉什福德的点球击中门柱,桑乔的点球被唐纳鲁马扑出,若日尼奥的点球也被皮克福德没收,最后出场的萨卡也罚丢点球,意大利队就此拿下欧洲杯冠军!", @"2020欧洲杯在今日清晨落下帷幕。2020年原本是欧洲杯诞辰60周年,欧足联早早决定不设主办国,而是让12座城市共同主办。因疫情影响推迟一年后,都柏林、毕尔巴鄂两座城市无法满足办赛要求,前者的主办资格被取消,后者的主办资格由另一座西班牙城市塞维利亚获得。作为疫情之下的首场大型体育赛事,能否为疫情常态化后大型活动提供经验?按照欧足联的要求,本届欧洲杯允许观众大规模入场观赛,大部分球场的入场观众人数占球场总容量的25%左右,俄罗斯圣彼得堡、阿塞拜疆巴库两座球场允许上座率达到50%,匈牙利布达佩斯球场允许上座率达到100%。世界卫生组织7月1日表示,欧洲杯开幕以来,球迷在举办城市的赛场、酒馆观战,这样的人群聚集令当地的新冠感染率上升。", @"北京时间7月11日上午8点,美洲杯决赛正式打响,由阿根廷队对阵巴西队。上半场迪马利亚单刀破门,打进全场唯一进球,最终帮助阿根廷1-0击败巴西队,成功夺冠,时隔28年之后再度问鼎,这一战连创6大纪录。阿根廷在美洲杯历史上拿过14个冠军,仅次于乌拉圭的15个冠军,上一次夺冠还得追溯到1993年。那一次夺冠之后,阿根廷4次打进美洲杯决赛,遭遇4连败,分别输给巴西队和智利队。本届美洲杯,阿根廷小组赛头名轻松出线,随后8强淘汰厄瓜多尔和4强淘汰哥伦比亚,时隔5年再进决赛。两队历史上有过105次交手,阿根廷取得39胜22平44负处于下风。国际足联最新一期排名,阿根廷位列世界第8位,巴西位列世界第3位。",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"111111111111111",@"2222222222222222222222",@"333333333333333333333",@"over over over over over over over over "

ljssafe commented 1 year ago

demo发现 原封不动 只是把 0 4的单列改成默认双列 就会有此情况 WX20230519-093526

czl0325 commented 1 year ago

yes改成no之后,你上面的sizeForItemAtIndexPath,尺寸代码是要改的

ljssafe commented 1 year ago

😯??固定宽度高度自适应难道不行么?我在项目上也是宽度固定高度自适应跟现在是一样的情况,只有flowLayout.columnSortType = minHeight; 才可以 另外一种排序依旧有上图情况发生

czl0325 commented 1 year ago

😯??固定宽度高度自适应难道不行么?我在项目上也是宽度固定高度自适应跟现在是一样的情况,只有flowLayout.columnSortType = minHeight; 才可以 另外一种排序依旧有上图情况发生

差点被绕进去了,我这个是没错的。你设置flowLayout.columnSortType = Sequence; 这个是按顺序排列,一个左一个右,在一个左一个右。你没看左右两边的item数量是一致的吗?

ljssafe commented 1 year ago

看我的截图哦 前面是正常的呢,后面有问题,会一直在左边或者右边 另外一边会空着

WX20230609-162540@2x

czl0325 commented 1 year ago

没错的,因为你右边的刚好的都特别长,左边的都特别短,就造成左边空出一堆。 就像你有4个,A,B,C,D,A和C都是10的高度,B和D都是100高度,左边是排AC,高度加起来只有20,右边排BD,高度加起来200,那不是左边空出180的高度,这正常,因为是按顺序排列。