CALayer Antialiasing不如UIView抗锯齿

我一直在试图使用CALayeranimation圆形图。 这一切运作良好,但问题是 – 绘制的圈不足够antialiased。 它有一些粗糙的边界(如果使用光栅化,则会模糊)。 (AntiAliasing已启用)

也试过:

edgeAlliiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;

无济于事。

下面是一个没有光栅化的例子: 在这里输入图像说明

这里是一个光栅化的例子:(尝试从1.0到4.0的值(只是为了确定结果 – 相同))

在这里输入图像说明

这里是同一个圆圈,但是绘制在UIView中:

在这里输入图像说明

你可以看到,用UIView drawrect绘制的圆看起来好多了。

我不能使用UIView的原因是因为我需要animation圈填充。 使用CALayer是很容易的,但是在UIView上做同样的事情,我真的不知道它是否可能。 (我可以尝试启动drawrect:每1/60秒,但我认为它会变得迟缓,因为它不是这样的)。

所以 – 有没有人有任何解决scheme,我可以使CALayer绘制的圆圈/线看起来像绘制UIView?

我之前在视网膜设备上使用过CALayer像素化图画时遇到了问题。 (我假设你在视网膜设备上看到这个问题)做以下修复了我遇到的问题:

 layer.contentsScale = [[UIScreen mainScreen] scale]; 

您不需要处理光栅化或抗锯齿。 在我自己的代码中,我最初实现了绘制一些东西到一个UIView ,后来我改变了绘制在一个CALayer ,并简单地设置contentsScale属性使两个绘制相同。