今天遇到了个挺离奇的问题,丫的,设的圆角总是缺了个角。
上图
眼看,因为一直感觉总是左边圆缺的那一块,就是右边圆多的那一块,所以一直查代码,觉得原因出在前后两个空间重叠了。
到了把两个圆拉到很远了,丫的,还是不圆,我就奔溃了··
耗了很久,才发现与画圆角算法无关,是像素点惹的祸!
原因
像素对不齐!
一开始以为是高度是奇数出问题
因为是做全圆角的,所以角度是取1/height,当时height = 21,在retina屏,21*2 = 42,偶数。 其实关系不大。
影响效果最大是宽度的值太精确了
之前之所以一直没遇到过这个问题,莫过于,正常情况下,我们都把宽高写死了,都是用那些很正常的整数吧,自己不会故意把值设成30.78这么奇葩吧···,
解决
小数取整,在C语言有几种选择:
- ceil()
- floor()
- round()
当然选其中的round()来四舍五入了。