直接上图


这两张占比图是用Core Graphics 绘制的,仔细看会有不同。第一张的水平线会有些发虚。
发现这个问题后我先想到是不是因为y轴出现小数,导致不够一个像素的大小导致的,但是发现显然不是,因为即使不够一个像素大小,也不会出现虚的情况,只能出现高度会有肉眼看不见的偏差。
但是问题肯定在小数

这个是代码,后来想到计算机绘图都是一个像素一个像素的绘制上去的,绘制的时候会获取需要绘制的点的坐标,大家都知道计算机在计算小数的时候是不准确的,如果每次绘制的时候取到的坐标都不是准确的,上下左右都有偏差就会造成这种虚化的情况,所以代码改成这个
NSInteger y = size.height * (1 - _progress);
这样,y值是一个准确的值,就没有出现虚化的情况了
网友评论