È possibile ritagliare un CALayer su un percorso arbitrario? Sono consapevole che posso aggrapparmi ai confini del superlayer, ma in questo caso devo essere molto più prescrittivo.Clipping di un CALayer al percorso arbitrario
TIA, Adam
È possibile ritagliare un CALayer su un percorso arbitrario? Sono consapevole che posso aggrapparmi ai confini del superlayer, ma in questo caso devo essere molto più prescrittivo.Clipping di un CALayer al percorso arbitrario
TIA, Adam
Utilizzare un CAShapeLayer come maschera per il livello che si desidera ritagliare. CAShapeLayer ha una proprietà path che accetta un CGPathRef.
Sì, è possibile sovrascrivere il drawInContext del livello personalizzato.
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)
}
Oppure è possibile creare un CAShapeLayer come maschera.