Schneiden Sie ein transparentes Loch in UIView
Suchen, eine Ansicht zu erstellen, hat einen transparenten Rahmen im inneren, so dass der Blick hinter die Ansicht kann gesehen werden, durch diese transparente Rahmen, aber die Bereiche außerhalb dieser nicht durch. Also im wesentlichen ein Fenster in der Ansicht.
Hoffen, dass Sie in der Lage, so etwas zu tun:
CGRect hole = CGRectMake(100, 100, 250, 250);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextFillRect(context, rect);
CGContextAddRect(context, hole);
CGContextClip(context);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, rect);
aber die klare überschreibt nicht die schwarze, so dass ganze hintergrund ist schwarz. Irgendwelche Ideen in diese Richtung?
InformationsquelleAutor der Frage tiltem | 2012-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist meine Umsetzung (so wie ich benötigt eine view-mit transparenten Teile):
Header (.h) Datei:
Umsetzung (.m) Datei:
Nun um das hinzufügen einer Ansicht mit teilweiser Transparenz, die Sie benötigen, zu importieren PartialTransparentView benutzerdefinierte UIView-Unterklasse, dann verwenden Sie es wie folgt:
Dadurch wird eine Sicht erstellen, die mit 2 transparenten rects.
Natürlich können Sie hinzufügen, wie viele rects, wie Sie möchten, oder verwenden Sie einfach eine.
Der obige code ist nur die Handhabung Rechtecke, so dass, wenn Sie möchten, verwenden Sie Kreise, Sie haben es zu ändern.
InformationsquelleAutor der Antwort Lefteris
Lefteris Antwort ist absolut richtig, aber es schafft transparente Rects. Für KREISFÖRMIGE transparente Schicht, ändern Sie zeichnen rect als
InformationsquelleAutor der Antwort Mosib Asad
Ich verwendet
UIBezierPath
zu handhaben, schneiden die transparente Loch.Der folgende code wird in eine Unterklasse der
UIView
dass Sie möchten, zeichnen Sie ein transparent, Loch:InformationsquelleAutor der Antwort mikeho
Wird dies tun, ist die clipping:
InformationsquelleAutor der Antwort MaheshShanbhag
@mosib die Antwort war eine große Hilfe für mich, bis ich wollte, mehr zu zeichnen als eine kreisrunde Ausschnitte aus meiner Sicht. Nach ein bisschen kämpfen, ich aktualisierte meine drawRect wie folgt aus (code in swift...leider schlechte Bearbeitung):
InformationsquelleAutor der Antwort Bushra Shahid
Andere Lösung:
Das Große Rechteck ist alle anzeigen (gelbe Farbe) und die kleine ist die transparente rect.
Die Farbe, die Deckkraft ist einstellbar.
InformationsquelleAutor der Antwort sansa
Diese Implementierung unterstützt Rechtecke und Kreise, geschrieben von swift:
PartialTransparentMaskView
InformationsquelleAutor der Antwort dichen
Hier ist meine Allgemeine rasche Umsetzung.
{someViewArray.map{($0,false)}} //array of views, not round
Hoffe es hilft jemand, danke an die anderen Mitwirkenden
InformationsquelleAutor der Antwort wils
Wenn Sie etwas wollen schnell und effektiv, ich habe eine Bibliothek (TAOverlayView) CocoaPods, können Sie beim erstellen von überlagerungen mit Rechteckiger/Runder Löcher, so dass die Interaktion des Nutzers mit Blick auf die hinter der Auflage. Ich benutzte es, um dieses tutorial für unsere apps:
Können Sie den hintergrund ändern, durch festlegen der
backgroundColor
von der überlagerung mit so etwas wieUIColor(red: 0, green: 0, blue: 0, alpha: 0.85)
je nach Ihrer Farbe und Deckkraft benötigt.InformationsquelleAutor der Antwort Nick Yap
Umsetzung des @Lefteris Antwort auf Swift 4:
InformationsquelleAutor der Antwort Joel Márquez
Gut werde ich haben zu beantworten, da verpasste der Author und füllte eine Antwort in form 🙂
Ich wirklich möchte, Carsten mehr Informationen über den besten Weg, das zu tun, was er vorschlägt.
Könnten Sie
erstellen eine hintergrund-Farbe' - Bild von beliebiger Komplexität. Ein Bild kann entweder programmgesteuert erstellt, wenn Sie sind vertraut mit der Erstellung von Klassen oder statisch, wenn Sie die windows-Rahmen sind vordefiniert.
InformationsquelleAutor der Antwort A-Live
Endete "Faking" es
Rahmen ist eine Eigenschaft
InformationsquelleAutor der Antwort tiltem
in diesem code erstellen Sie mehr als Kreis
InformationsquelleAutor der Antwort IOS
Einschließlich eine Antwort für Xamarin Studio-iOS mit C#. Dies zieht eine einzelne abgerundete Rechteck mit 60% Alpha. Meist entnommen aus der Antwort von @mikeho
InformationsquelleAutor der Antwort Gandalf458
Tun es die andere Weise herum! Die Ansichten, die Sie möchten, um zu sehen, durch das "Loch" in einer separaten view auf die richtige Größe. Dann setzen Sie "clipsToBounds" JA, und diese Ansicht auf die Oberseite. Die Ansicht mit den "transparenten" Rahmen ist in der untersten. "clipsToBounds" bedeutet alles, was außerhalb der box/Loch abgeschnitten.
Dann könnten Sie zu tun haben, wie Berührungen behandelt werden. Aber das ist eine andere Frage. Vielleicht Einstellung userInteractionEnabled auf die nach Ansichten ist genug.
InformationsquelleAutor der Antwort Carsten