CALayer Antialiasing不如UIView抗锯齿

Gun*_*nds 19 objective-c calayer uiview ios

我一直在尝试使用CALayer制作圆形绘图动画.这一切都运作良好,但问题是 - 绘制圆圈不足以抗锯齿.边框有点过于粗糙(如果使用栅格化,则会模糊).(启用AntiAliasing)

也尝试过:

edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;

无济于事.

这是一个没有光栅化的样子: 在此输入图像描述

以下是光栅化的示例:(尝试从1.0到4.0的值(只是为了确定.结果 - 相同.))

在此输入图像描述

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

在此输入图像描述

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

我不能使用UIView的原因是因为我需要动画圆填充.使用CALayer非常简单,但是要在UIView上做同样的事情,我真的不知道它是否可能.(我可以尝试启动drawrect:每1/60秒,但我认为它会变得迟钝,因为它不是那样的).

那么 - 有没有人有任何解决方案如何在CALayer上绘制圆圈/线条与UIView上绘制的相同?

Gav*_*vin 46

我以前CALayer在视网膜设备上有像素化绘图的问题.(我假设您在视网膜设备上看到了问题)执行以下操作修复了我遇到的问题:

layer.contentsScale = [[UIScreen mainScreen] scale];
Run Code Online (Sandbox Code Playgroud)

您不应该处理光栅化或抗锯齿.在我自己的代码中,我最初实现了绘制某些内容UIView,后来我将其更改为绘制CALayer,并简单地设置contentsScale属性使两者绘制相同.

  • 天哪,我不敢相信我错过了这个.这有效!!!! 谢谢 !!!!你让我今天一整天都感觉很好 :) (3认同)