【发布时间】:2017-07-03 11:28:03
【问题描述】:
我正在尝试使用带有图像的 CALayer 作为屏蔽 UIView 的内容。对于面具,我有复杂的 png 图像。如果我将图像作为 view.layer.mask 应用,我会得到与我想要的相反的行为。 有没有办法扭转CAlayer?这是我的代码:
layerMask = CALayer()
guard let layerMask = layerMask else { return }
layerMask.contents = #imageLiteral(resourceName: "mask").cgImage
view.layer.mask = layerMask
// What I would like to to is
view.layer.mask = layerMask.inverse. // <---
我看过几篇关于反向 CAShapeLayers 和可变路径的帖子,但没有什么地方可以反转 CALayer。 我可以做的是在 Photoshop 中反转图像,以使 alpha 反转,但问题是我将无法创建具有精确尺寸以适合所有屏幕尺寸的图像。我希望它确实有意义。
【问题讨论】:
-
问题在于掩码在关键窗口的中心有一个固定的大小。如果我要在 Photoshop 中绘制“正确”的蒙版,我将永远无法让蒙版适用于所有屏幕尺寸。所以我使用我的公司标志作为面具,我需要从主视图中模版出来
-
不,我不关注。为什么如果你从 your 掩码开始会起作用,但如果你从 正确 掩码开始会不起作用?
-
在 Photoshop 中反转你的蒙版。否则你可以在代码中反转它,但你为什么要通过 Photoshop 来做呢?
-
我在主帖中添加了一个示例图片
-
好吧,我的回答告诉你怎么做。如果您从用黑色绘制的三角形开始,您可以制作包含三角形的任何所需大小的图像,并将其变成完全符合您想要的蒙版。