Sto usando CAShapeLayer.path
e CALayer.mask
per impostare la maschera immagine, posso ottenere il "set differenza" ed effetto "unione" per CGPath
impostandoCome ottenere l'intersezione di due CGPath?
maskLayer.fillRule = kCAFillRuleEvenOdd/kCAFillRuleZero
Tuttavia, come posso ottenere l'intersezione di due percorsi? Non riesco a raggiungerlo con la regola pari-dispari
Ecco un esempio:
let view = UIImageView(frame: CGRectMake(0, 0, 400, 400))
view.image = UIImage(named: "scene.jpg")
let maskLayer = CAShapeLayer()
let maskPath = CGPathCreateMutable()
CGPathAddEllipseInRect(maskPath, nil, CGRectOffset(CGRectInset(view.bounds, 50, 50), 50, 0))
CGPathAddEllipseInRect(maskPath, nil, CGRectOffset(CGRectInset(view.bounds, 50, 50), -50, 0))
maskLayer.path = maskPath
maskLayer.fillRule = kCAFillRuleEvenOdd
maskLayer.path = maskPath
view.layer.mask = maskLayer
come posso ottenere la parte centrale di essa da mostrare? Voglio dire, solo la parte centrale (che è vuota nella vista di esempio).
Posso farlo facilmente con software di progettazione vettoriale come AI, quindi penso che ci sia un modo per gestire.
Vedi http://robnapier.net/clipping-cgrect-cgpath per una tecnica. La stessa tecnica può essere utilizzata per più CGPath (in realtà si applica a qualsiasi cosa tu possa disegnare). –