是否可以将CALayer剪辑到任意路径?我知道我可以剪辑到超级界限,但在这种情况下我需要更具说明性。
TIA,Adam
答案 0 :(得分:14)
使用CAShapeLayer作为要剪辑的图层的蒙版。 CAShapeLayer有一个带有CGPathRef的路径属性。
答案 1 :(得分:1)
是的,您可以覆盖自定义图层的drawInContext。
func addPathAndClipIfNeeded(ctx:CGContext) {
if (self.path != nil) {
CGContextAddPath(ctx,self.path);
if (self.stroke) {
CGContextSetLineWidth(ctx, self.lineWidth);
CGContextReplacePathWithStrokedPath(ctx);
}
CGContextClip(ctx);
}
}
override public func drawInContext(ctx: CGContext) {
super.drawInContext(ctx)
addPathAndClipIfNeeded(ctx)
}
或者您可以创建一个CAShapeLayer作为掩码。