Да, вы можете переопределить 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 как маску.