Meine Login-Ansicht hat eine Unteransicht mit einem UIActivityView
und UILabel
sagen : „In Signing ...“. Diese Unteransicht hat Ecken, die nicht abgerundet sind. Wie kann ich sie rund machen?
Gibt es eine Möglichkeit, dies in meinem xib zu tun?
ios
cocoa-touch
uiview
itsaboutcode
quelle
quelle
cornerRadius
Eigenschaft nur mit Interface Builder auf die Tabelle angewendet wird , ohne dass vorgerenderte Bilder verwendet oder im Code festgelegt werden müssen.Antworten:
Versuche dies
...
Hinweis: Wenn Sie versuchen, abgerundete Ecken auf
UIViewController
die Ansicht einer Ansicht anzuwenden , sollte diese nicht im Konstruktor des Ansichtscontrollers angewendet werden, sondern in-viewDidLoad
, nachdem sieview
tatsächlich instanziiert wurde.quelle
Sie können auch die Funktion Benutzerdefinierte Laufzeitattribute des Interface Builder verwenden, um den Schlüsselpfad
layer.cornerRadius
auf einen Wert festzulegen. Stellen Sie jedoch sicher, dass Sie dieQuartzCore
Bibliothek einschließen .Dieser Trick funktioniert auch zum Festlegen von layer.borderWidth, funktioniert jedoch nicht,
layer.borderColor
da dies einCGColor
nicht a erwartetUIColor
.Sie können die Effekte im Storyboard nicht sehen, da diese Parameter zur Laufzeit ausgewertet werden.
quelle
Clip Subviews
Option auch für die Ansicht IB einzucheckenJetzt können Sie eine schnelle Kategorie in UIView (Code unter dem Bild) in @IBInspectable verwenden, um das Ergebnis im Storyboard anzuzeigen. (Wenn Sie die Kategorie verwenden, verwenden Sie nur CornerRadius und nicht layer.cornerRadius als Schlüsselpfad.
quelle
@IBDesignable
diese unbedingt mit , um eine Live-Vorschau in IB zu erhalten! (Mehr unter nshipster.com/ibinspectable-ibdesignable )Schnell
Kurze Antwort:
Ergänzende Antwort
Wenn Sie zu dieser Antwort gekommen sind, haben Sie wahrscheinlich bereits genug gesehen, um Ihr Problem zu lösen. Ich füge diese Antwort hinzu, um ein bisschen mehr visuelle Erklärung dafür zu geben, warum Dinge das tun, was sie tun.
Wenn Sie mit einem regulären beginnen
UIView
, hat es quadratische Ecken.Sie können es um runde Ecken geben, indem Sie die
cornerRadius
Eigenschaft der Ansicht ändernlayer
.Größere Radiuswerte ergeben abgerundete Ecken
und kleinere Werte ergeben weniger abgerundete Ecken.
Dies könnte ausreichen, um Ihr Problem genau dort zu lösen. Manchmal kann eine Ansicht jedoch eine Unteransicht oder eine Unterschicht haben, die außerhalb der Grenzen der Ansicht liegt. Wenn ich zum Beispiel eine Unter hinzuzufügen Ansicht wie diese
oder wenn ich eine Unter hinzuzufügen Schicht wie diese
Dann würde ich mit enden
Wenn ich nicht möchte, dass Dinge außerhalb der Grenzen hängen, kann ich das tun
oder dieses
was dieses Ergebnis gibt:
Beide
clipsToBounds
undmasksToBounds
sind gleichwertig . Es ist nur so, dass der erste mitUIView
und der zweite mit verwendet wirdCALayer
.Siehe auch
quelle
blueView.frame.size.height/2
) zu einer perfekt abgerundeten Ecke führt.Ein anderer Ansatz als der von Ed Marty:
Sie benötigen die setMasksToBounds, um alle Objekte von IB zu laden ... Ich habe ein Problem, bei dem meine Ansicht gerundet wurde, aber die Objekte von IB nicht hatten: /
das hat es behoben = D hoffe es hilft!
quelle
Wie in diesem Blog-Beitrag beschrieben , gibt es hier eine Methode, um die Ecken eines UIView abzurunden:
Das Coole daran ist, dass Sie auswählen können, welche Ecken aufgerundet werden sollen.
quelle
Sie müssen zuerst die Header-Datei importieren
<QuartzCore/QuartzCore.h>
Verpassen Sie nicht zu verwenden -
setMasksToBounds
sonst wird der Effekt möglicherweise nicht angezeigt.quelle
Sie können die folgende benutzerdefinierte
UIView
Klasse verwenden, die auch die Rahmenfarbe und -breite ändern kann. In diesemIBDesignalbe
Fall können Sie die Attribute auch im Interface Builder ändern.quelle
quelle
Swift 4 - Verwenden von IBDesignable
quelle
layer.cornerRadius
der ursprüngliche Zustand wiederhergestellt wird? (Wie kann das Storyboard von xcodecornerRadius
erst nach derUIView
Initialisierung des Originals eingestellt werden ?)quelle
- SwiftUI
In SwiftUI können Sie den
cornerRadius
Modifikator direkt für jedenView
gewünschten verwenden. Zum Beispiel dieser Frage:Beachten Sie, dass es keinen diamantähnlichen Radius mehr gibt. Selbst wenn Sie den Eckradius auf mehr als die Hälfte der Höhe einstellen einstellen, wird er glatt gerundet.
Überprüfen Sie diese Antwort, um zu erfahren, wie bestimmte Ecken in SwiftUI gerundet werden
quelle
Bitte importieren ,
Quartzcore framework
dann haben Sie zu SatzsetMaskToBounds
zuTRUE
die sehr wichtige Linie dieses.Dann:
[[yourView layer] setCornerRadius:5.0f];
quelle
quelle
Tun Sie dies programmgesteuert in obj c
Wir können dies auch von stoaryboard aus tun.
quelle
Wenn die runde Ecke in viewDidload () nicht funktioniert, ist es besser, Code in viewDidLayoutSubview () zu schreiben.
Hoffe das hilft!
quelle
Sie können auch ein Bild verwenden:
quelle
setze eckeRadious Eigenschaft für runde Ansicht
set masksToBounds Boolescher Wert für das Bild wird immer noch nicht außerhalb der Eckenradiusgrenze gezeichnet
quelle
Verwenden der UIView-Erweiterung:
Verwendungszweck:
quelle
In Swift 4.2 und Xcode 10.1
quelle
ON Xcode 6 Ihr Versuch
oder
quelle