【问题标题】:How to Anti-Alias Layers in iPhoneOS如何在 iPhoneOS 中消除锯齿层
【发布时间】:2010-03-17 20:29:51
【问题描述】:

我们已经用了几个月的 Reiner Knizia 的钱。它是 做得很好,所以我们一直在时间允许的情况下更新它。 然而,有一件事继续困扰着我。我从来没能得到我的 正确分层卡片以消除锯齿。

这是一个示例:

平直的牌非常干净,但无论何时 有角度的卡片周围的黑线变得锯齿状。我试过这个 取决于艺术品隐含的线条和绘制的线条 通过drawRect:,他们都做同样的事情。我试过了 edgeAntiAliasingMask,据我所知,它没有做任何事情。 我已经尝试将 maskToBounds 设置为 NO 和 YES。

现在我的卡设置为具有子 CALayer 的 CALayer 正面和背面,再加上一些其他的东西,比如美白面膜 和一个变暗的面具。这是代码的一些sn-ps:

   CArdLayer *theCardLayer = [CArdLayer layer];
   theCardLayer.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;

   theCardLayer.front = [CALayer layer];
   theCardLayer.front.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;
   theCardLayer.front.bounds = theCardLayer.bounds;
   theCardLayer.front.masksToBounds = YES;
   theCardLayer.front.contents = (id)[cardDrawing CGImage];

   [theCardLayer addSublayer:theCardLayer.front];

等等……

关于如何使卡片真正抗锯齿的任何想法?

【问题讨论】:

标签: iphone core-animation


【解决方案1】:

这有增加透明边框的效果:

layer.cornerRadius = 1.01;

【讨论】:

    【解决方案2】:

    我能想出的最好结果是按照我在评论中的建议进行操作:我将每个(透明)图形的每边都增加了 1 个像素。有了那一点边距,卡片与背景的合成效果要好得多。

    因此,不完全是 iPhone 代码答案,但仍然适用于 iPhone。

    这是一个“之后”的镜头,您可以将其与上面的“之前”进行比较:

    【讨论】:

    • 嗨,Shannon,你是如何在每一侧将笔划扩大一个透明像素的?你能分享代码sn-p吗?谢谢。
    • Photoshop。我在那里打开了每个文件,并在两个方向上将画布大小扩大了 2 个像素。
    【解决方案3】:

    我从未使用过该框架,但看起来抗锯齿仅适用于卡片的内侧,而不是外侧(假设非旋转卡片上的圆角是一种特殊情况)。

    所以恕我直言,这实际上是卡片和背景的构图问题

    快速查看the docs 提供了一些提示(仅限假设,请尝试):

    确保Opaque 属性为假(可能您看到的是渲染代码优化的结果)。

    如果您将不透明度设置为“接近不透明”(可能是 0.9?),请检查它的外观。

    检查Mask 属性。它应该允许你创建一个像 alpha 通道一样的蒙版,带有软边框 - 虽然我知道它不是你真正想要的......

    【讨论】:

    • 感谢您的回复。 opaque 或 opacity 属性都没有任何区别。但是,我坚持您的说法,即抗锯齿仅适用于卡的内侧。因此,我尝试通过每侧的(透明)像素来扩展我的一张卡片。结果是笔画(当前在实际卡片图形中)要柔和得多。所以,这看起来像是一个解决方案,但是让每个图形比它需要的大 2x2 像素似乎很笨拙,所以在我这样做之前有人有什么想法吗?
    【解决方案4】:

    如果您不想启动 Photoshop,可以通过以下方式以编程方式进行操作:

    http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

    特别是UIImage+Alpha.h/.m中的-transparentBorderImage: category方法

    希望这可以帮助其他人。

    谢谢http://vocaro.com/trevor/blog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2017-01-02
      • 2023-03-27
      • 2012-03-21
      • 2014-02-18
      • 1970-01-01
      相关资源
      最近更新 更多