“尽量使用ceilf(),避免小数的UI绘制(比如frame.origin.x、size等出现小数的情况)” 关于为什么要这样做,最近几天我做了一点研究,目前得出如下的原因:
-
可能造成UI显示异常。比如当使用Autolayout布局时,如果size出现了小数,系统内部可能会进行rounding等操作,最终显示出来的size可能并不会和我们设置的完全一致。因此会造成UI和期望不一致,比如该显示下的内容没有显示全,导致打点展示
-
因为像素不对齐的原因,可能会带来额外的性能损耗。像素不对齐发生时,GPU在绘制图层时,需要进行额外的插值运算。常见的像素不对齐情况有:a. 图片和图片容器(如imageview、button.imageview)尺寸不一致导致的图片缩放;b. UI控件的origin不能与实际屏幕上的像素位置对齐(可以简单理解为origin出现小数的情况,但并不是所有origin是小数的情况都会导致像素不对齐)
延伸
- 像像素不对齐这种问题,会对UI渲染带来多少性能损耗,如何衡量?