I CAShapeLayer.path
und CALayer.mask
bin mit Bildmaske einzurichten, ich kann durch Einstellung von „Differenz-Set“ und „Union“ -Effekt für CGPath
erreichenWie bekomme ich die Schnittmenge von zwei CGPath?
maskLayer.fillRule = kCAFillRuleEvenOdd/kCAFillRuleZero
aber wie kann ich die Kreuzung zweier Wege bekommen? Ich kann es nicht mit Gerade-Ungerade-Regel erreichen
Hier ist ein Beispiel:
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
, wie kann ich den mittleren Teil davon bekommen gezeigt werden? Ich meine, nur der mittlere Teil (der in der Beispielansicht leer ist).
ich es kann in Vektor-Design-Software wie AI leicht tun, so dass ich denke, es gibt einen Weg zu handhaben sein.
Siehe für eine Technik http://robnapier.net/clipping-cgrect-cgpath. Die gleiche Technik kann für mehrere CGPaths verwendet werden (gilt für alles, was Sie zeichnen können). –