Gibt es einen eingebauten Weg, um UILabels mit runden Ecken zu erstellen? Wenn die Antwort nein ist, wie würde man vorgehen, um ein solches Objekt zu erstellen?
quelle
Gibt es einen eingebauten Weg, um UILabels mit runden Ecken zu erstellen? Wenn die Antwort nein ist, wie würde man vorgehen, um ein solches Objekt zu erstellen?
iPhone OS 3.0 und höher unterstützt die cornerRadius
Eigenschaft für die CALayer
Klasse. Jede Ansicht verfügt über eine CALayer
Instanz, die Sie bearbeiten können. Dies bedeutet, dass Sie abgerundete Ecken in einer Linie erhalten können:
view.layer.cornerRadius = 8;
Du wirst brauchen #import <QuartzCore/QuartzCore.h>
das QuartzCore-Framework verweisen, um Zugriff auf die Header und Eigenschaften von CALayer zu erhalten.
Eine Möglichkeit, die ich kürzlich verwendet habe, besteht darin, eine UIView-Unterklasse zu erstellen, die einfach ein abgerundetes Rechteck zeichnet, und dann das UILabel oder in meinem Fall UITextView zu einer darin enthaltenen Unteransicht zu machen. Speziell:
UIView
Unterklasse und nennen Sie sie so RoundRectView
.RoundRectView
's drawRect:
Methode einen Pfad um die Grenzen der Ansicht, indem Sie Core Graphics-Aufrufe wie CGContextAddLineToPoint () für die Kanten und CGContextAddArcToPoint () für die abgerundeten Ecken verwenden.UILabel
Instanz und machen Sie sie zu einer Unteransicht von RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Sie können RoundRectView mit Interface Builder in einer Ansicht platzieren, wenn Sie eine generische UIView erstellen und deren Klasse dann mit dem Inspektor ändern. Sie werden das Rechteck erst sehen, wenn Sie Ihre App kompilieren und ausführen, aber zumindest können Sie die Unteransicht platzieren und sie bei Bedarf mit Outlets oder Aktionen verbinden.
Für Geräte mit iOS 7.1 oder höher müssen Sie Folgendes hinzufügen:
quelle
Ab Swift IOS8 basierend auf OScarsWyck Antwort:
quelle
YES
zutrue
.UILabel
Anruf :myLabel
.#import <QuartzCore/QuartzCore.h>
in Ihrer
viewDidLoad
Schreib dieser Zeile:self.myLabel.layer.cornerRadius = 8;
Viel Glück
quelle
Sie können einen gerundeten Rand mit der Breite des Randes eines beliebigen Steuerelements folgendermaßen erstellen: -
Ersetzen
lblName
Sie einfach durch IhreUILabel
.Hinweis: - Vergessen Sie nicht zu importieren
<QuartzCore/QuartzCore.h>
quelle
Ich habe eine schnelle
UILabel
Unterklasse erstellt, um diesen Effekt zu erzielen. Außerdem habe ich die Textfarbe für maximalen Kontrast automatisch auf Schwarz oder Weiß eingestellt.Ergebnis
Gebrauchte SO-Beiträge:
Spielplatz
Fügen Sie dies einfach in einen iOS-Spielplatz ein:
quelle
Eine andere Methode besteht darin, ein PNG hinter dem UILabel zu platzieren. Ich habe Ansichten mit mehreren Beschriftungen, die eine einzelne Hintergrund-PNG überlagern, die alle Grafiken für die einzelnen Beschriftungen enthält.
quelle
xCode 7.3.1 iOS 9.3.2
quelle
Wenn Sie UI abgerundete Ecke wollen Objekte wie (
UILabel
,UIView
,UIButton
,UIImageView
) von Storyboard dann gesetztclip to bounds
wahr und stellenUser Defined Runtime Attributes
Schlüsselpfade alslayer.cornerRadius
Typ = Anzahl und Wert = 9 (als Ihre Anforderung)quelle
quelle
Swift 3
Wenn Sie ein abgerundetes Etikett mit Hintergrundfarbe wünschen, müssen Sie zusätzlich zu den meisten anderen Antworten auch die
layer
Hintergrundfarbe festlegen . Es funktioniert nicht beim Einstellen derview
Hintergrundfarbe.Wenn Sie das automatische Layout verwenden, das Etikett auffüllen und die Größe des Etiketts nicht manuell festlegen möchten, können Sie eine UILabel-Unterklasse erstellen und die
intrinsincContentSize
Eigenschaft überschreiben :Um die beiden zu kombinieren, müssen Sie auch festlegen
label.textAlignment = center
, sonst würde der Text linksbündig bleiben.quelle
In Monotouch / Xamarin.iOS habe ich das gleiche Problem wie folgt gelöst:
quelle
Funktioniert perfekt in Swift 2.0
quelle
Haben Sie versucht, den
UIButton
Builder aus dem Interface-Builder (mit abgerundeten Ecken) zu verwenden und mit den Einstellungen zu experimentieren, damit er wie eine Beschriftung aussieht? Wenn Sie nur statischen Text anzeigen möchten.quelle
"CornerRadius" ist die Schlüsseleigenschaft zum Festlegen der abgerundeten Kanten. Wenn Sie für alle Beschriftungen in Ihrer Anwendung denselben Stil verwenden, würde ich eine Erweiterungsmethode empfehlen.
Code:
Ausgabe:
Warum Verlängerungsmethode?
Erstellen Sie eine Swift-Datei und fügen Sie den folgenden Code mit der Extention-Methode zur "UILabel" -Klasse hinzu. Diese Methode ist benutzerdefiniert, funktioniert jedoch für alle Labels in Ihrer Anwendung und trägt zur Aufrechterhaltung der Konsistenz und des sauberen Codes bei, wenn Sie dies tun Ändern Sie einen Stil in Zukunft nur in der Erweiterungsmethode.
quelle
Je nachdem, was genau Sie tun, können Sie ein Bild erstellen und es programmgesteuert als Hintergrund festlegen.
quelle