我有两个 CALayer 子类的实例。
它们之间的唯一区别是这一行:
[self setTransform:CATransform3DMakeScale(2, 2, 2)];
我还需要什么才能使大图层在 2x 的比例下看起来不错?
PS:(为避免混淆)这些图层还包括一些控制按钮、阴影和圆角,以模仿窗口系统中窗口的外观,但这些不是 NSWindows 实例。
我有两个 CALayer 子类的实例。
它们之间的唯一区别是这一行:
[self setTransform:CATransform3DMakeScale(2, 2, 2)];
我还需要什么才能使大图层在 2x 的比例下看起来不错?
PS:(为避免混淆)这些图层还包括一些控制按钮、阴影和圆角,以模仿窗口系统中窗口的外观,但这些不是 NSWindows 实例。
简短的回答是,不要使用转换。变换通过放大图层来缩放图层,而无需重新渲染。
通过使用 CAShapeLayer 并对路径进行动画更改,您可以获得非常相似的效果。但是,这会给您带来清晰的渲染,因为它的路径动画确实会重新渲染像素。
我说“类似”效果是因为 CAShapeLayers 对整个图层使用 lineWidth 属性。您可以为值之间的线宽设置动画,并使用小数值,但您必须进行一些微调以使线宽与形状大小成比例地上下动画。另一个考虑是图形系统使用抗锯齿来绘制小数宽度路径,因此当线宽不是整数值时,它们看起来会略微柔和。您可以关闭抗锯齿,但它们看起来会非常锯齿。