【问题标题】:Drawing a layer shadow to a PDF context将图层阴影绘制到 PDF 上下文
【发布时间】:2012-01-25 15:11:56
【问题描述】:

我有一堆UIViews,我通过它们的图层添加阴影,在他们的drawRect 方法中:

self.layer.shadowPath = path;
self.layer.shadowColor = [[UIColor blackColor] CGColor];
self.layer.shadowOpacity = .6;
self.layer.shadowOffset = CGSizeMake(2,3);
self.layer.shadowRadius = 2;

这很好用,但我的问题是我还需要用这些视图创建一个 PDF。 我通过创建 PDF 上下文并将其传递给绘图方法来做到这一点,以便在 PDF 上下文中进行绘图。 这也很有效,只是阴影不在 PDF 中呈现。我尝试了几种方法,但还没有找到一种合适、简单的方法来让这些阴影出现在 PDF 中它们所属的位置。

有人知道怎么做吗?

【问题讨论】:

    标签: objective-c ios layer shadow cgpdfcontext


    【解决方案1】:

    您需要在 drawrect 中调用相关的 CoreGraphics 来绘制阴影,而不是使用 CALayer 属性。

    查看the Apple docs on shadows.

    【讨论】:

    • 感谢 Simon 的快速回复。我担心 :) - 使用 CGContextSetShadow,有没有办法防止它向笔画和子视图添加阴影?
    • 好吧,你要做的是保存/恢复上下文。所以说你想在单个矩形上绘制阴影,你使用 CGContextSaveState 保存当前状态,然后将阴影添加到上下文中,绘制你的矩形,然后使用 CGContextRestoreState 将上下文恢复到添加阴影之前的状态属性,然后您可以继续对绘图进行分层以获得所需的结果。
    • 你可以在任何时候调用保存/恢复,所以你可以做一些绘图然后保存,添加阴影,恢复,继续等,同样适用于剪辑。
    • 非常感谢!但是对于描边和填充,这意味着我需要将这两个操作分开吗?即转储CGContextDrawPath(context, kCGPathFillStroke ); 并添加两次路径并分别进行描边和填充?现在尝试一下,似乎可行,但我想确保我做对了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多