Używam CAShapeLayer.path
i CALayer.mask
założyć maskę obrazu, mogę osiągnąć „zestaw różnicy” i „Union” efekt dla CGPath
ustawiającJak uzyskać przecięcie dwóch CGPath?
maskLayer.fillRule = kCAFillRuleEvenOdd/kCAFillRuleZero
jednak, w jaki sposób można uzyskać punkt przecięcia dwóch ścieżek? Nie mogę go osiągnąć z parzystej nieparzystej reguły
Oto przykład:
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
jak mogę dostać środkową część, aby pokazać? Mam na myśli tylko środkową część (która jest pusta w widoku próbki).
Mogę to zrobić z łatwością w oprogramowaniu do projektowania wektorowego, takim jak sztuczna inteligencja, więc myślę, że musi istnieć sposób na obsłużenie.
Zobacz http://robnapier.net/clipping-cgrect-cgpath dla techniki. Ta sama technika może być użyta dla wielu CGPathów (w rzeczywistości odnosi się do wszystkiego, co możesz narysować). –