Hier ist ein Code, der Maske auf die gesamte UIView Anwendung:Bewerben CAShapeLayer zur Haupt UIView außer UIButton
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRect:self.view.bounds];
[maskPath appendPath:[UIBezierPath bezierPathWithArcCenter:self.mapCardsButton.center
radius:self.mapCardsButton.frame.size.height/2.0f
startAngle:0.0f
endAngle:2.0f*M_PI
clockwise:NO]];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.fillRule = kCAFillRuleEvenOdd;
maskLayer.fillColor = [UIColor blackColor].CGColor;
maskLayer.path = maskPath.CGPath;
self.view.layer.mask = maskLayer;
Das Problem ist, dass ich die Maske oben auf die gesamte UIView mit Ausnahme einer bestimmten UIButton (mapCardsButton anwenden möchten) welches auch auf der gleichen UIView ist. Ist es möglich zu tun?
UPD: Ich habe versucht,
[self.view.layer insertSublayer:maskLayer atIndex:0];
statt
self.view.layer.mask = maskLayer;
aber meine self.view verloren Alpha-Kanal und Animation von Maskenebene funktioniert nicht mehr
Hier ist ein Projekt mit code: https://www.dropbox.com/s/b94qcwxzoi23kwk/test_04092016.zip?dl=0
[self.view.layer insertSublayer: Gradient atIndex: 0]; –
Nachdem ich diesen Code hinzugefügt habe, wird meine UIView schwarz ohne Alpha und die Animation von maskLayer funktioniert nicht mehr. – Sergio
Sie möchten also die Vollansicht maskieren und nur den vollständigen Schaltflächenrahmen anzeigen, wie er gerade angezeigt wird. – HardikDG