问题描述
- 通过计算,想每行显示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
网友评论