UICollectionView 1px 缝隙问题
有时候会发现满屏幕等分 UICollectionView 的时候,一些机型会出现 1px 的缝隙,这个问题,让我很困惑。
分割线到底多高
有时候,设计图上标注的 1px 的分割线,展现出来的效果却总是差强人意,于是聪明的开发者默默改成了 0.5,效果还不错,但也还是心存困惑。
iOS 里的尺寸
困惑积压过多,不得不查查资料,希望能彻底解决这个问题。
px,pt,ppi
px:屏幕最小单位 pixel,也称为像素,像素和我们平常说的英寸厘米这些单位不同,它是没有固定大小的,一平方米的面积上可以放一千个像素也可以放一万个像素,我们只需要记住像素是个有弹性的、最小的单位就可以
pt:苹果规定的独立像素,可以理解为绝对长度,不随屏幕像素密度变化而变化,1pt 大概等于 0.16mm,这个和印刷概念中的 point 不是一个东西。
ppi:pixels per inch,即每英寸所拥有的像素数目,屏幕像素密度
正确的 1px 写法
1 | let onePixel = 1 / UIScreen.main.scale |
总结
关于 UICollectionView 的缝隙问题,根据前面所说,1px 就是当前屏幕下的最小单位,例如在 1px = 0.33pt 的屏幕下,如果算出来的宽度小数部分小于 0.33,那么是无法分配一个像素的,于是就出现了一个像素的缝隙。
关于分割线,因为实际开发中我们使用的单位大多是 pt,而设计师有可能使用 px,这时候,作为开发者要学会换算成正确的 pt,不然就会出现一些奇怪的偏差。
还是要多多学习啊~