如何强制CALayer以更高的分辨率重绘?

时间:2012-11-18 12:38:24

标签: core-animation calayer

Two CALayers

我有两个CALayer子类的实例。

他们之间的唯一区别是这一行:

[self setTransform:CATransform3DMakeScale(2, 2, 2)];

我还需要什么才能使大图层在规模上看起来很好2x?

PS :(避免任何混淆)图层还包括一些控制按钮,阴影和圆角,以模仿窗口系统中窗口的外观,但这些不是NSWindows实例。

1 个答案:

答案 0 :(得分:1)

简短的回答是,不要使用变换。变换通过放大来缩放图层,而无需重新渲染。

使用CAShapeLayer和动画更改路径可以获得非常相似的效果。然而,这会给你提供清晰的渲染,因为它的路径动画会重新渲染像素。

我说“类似”的效果是因为CAShapeLayers对整个图层使用了lineWidth属性。您可以为值之间的线宽设置动画,并使用小数值,但是您必须进行一些微调以使线条粗细与形状大小成比例地上下动画。另一个考虑因素是图形系统使用抗锯齿来绘制分数宽度路径,因此当线宽不是整数值时,它们看起来会略微柔和。你可以关闭抗锯齿,但是它们看起来真的很麻烦。