UIcollectionView布局的一个小Bug

作者: 鲲鹏DP | 来源:发表于2016-08-05 20:22 被阅读241次

问题描述

  • 通过计算,想每行显示3个cell。计算过程如下:
 let margin:CGFloat = 10
        let cellWH = (UIScreen.mainScreen().bounds.width - 4*margin)/3 
        itemSize = CGSize(width: cellWH, height: cellWH)
        minimumLineSpacing = margin
        minimumInteritemSpacing = margin
    sectionInset = UIEdgeInsets(top: margin, left: margin, bottom: 0, right: margin)
  • 先固定行、列和边缘间距都为10,每行显示3个cell,那么就可以根据屏幕的宽度来计算每个cell的宽高。按理说,使用这样的布局,应该cell的显示应该刚刚好。确实,一般情况下是OK的,能够显示出我们想要的效果,但是,当我们在6plus上运行时就会变成每行只有两个cell。


    Snip20160805_5.png

问题分析

  • 按理来说,通过上面的布局的思路是没有问题的。这点通过使用6plus以外的模拟器运行程序,布局正常能得到证实。使用6plus运行出现问题,可能和系统对6plus默认设置有关。因为这一样布局,3个图片和4个列间距的宽度刚好等于屏幕的宽度,系统可能要求布局宽度必须小于屏幕尺寸。

解决办法:

  • 让计算出来的cell的宽度减去一个很小的值(eg. 0.01),这样肉眼观察不出来,布局也会正常。
   let cellWH = (UIScreen.mainScreen().bounds.width - 4*margin)/3 - 0.01
Snip20160805_6.png

相关文章

网友评论

    本文标题:UIcollectionView布局的一个小Bug

    本文链接:https://www.haomeiwen.com/subject/bpxksttx.html