【发布时间】:2019-06-10 17:23:07
【问题描述】:
我有一个显示静态内容的 CALayer。用户可以动态传递其框架的子区域,我想要动态地将其可见部分限制为该子区域。其余部分应为黑色。这样做的正确方法是什么?
【问题讨论】:
标签: ios swift uikit core-animation calayer
我有一个显示静态内容的 CALayer。用户可以动态传递其框架的子区域,我想要动态地将其可见部分限制为该子区域。其余部分应为黑色。这样做的正确方法是什么?
【问题讨论】:
标签: ios swift uikit core-animation calayer
来自苹果文档:
您应该将任何绘图限制在 rect 参数中指定的矩形内。
这似乎暗示传递的“rect”只是一个建议。它不会为您创建它。
因此,如果您传入一个准确的子矩形,您应该将上下文转换为您定义的 x 和 y 值。
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()!
context.translateBy(x: rect.minX, y: rect.minY)
// Do your drawing here...
}
【讨论】:
创建一个新的 calayer,其 frame rect 等于用户的 subrect,并将其指定为静态内容层的遮罩层。这将只绘制蒙版区域。
【讨论】: