Benutzerdefinierte UIView
Unterklassen sind ein großer Produktivitätsgewinn. Man kann sie einmal programmieren und das Ergebnis dann projektübergreifend verwenden. Standardmäßig erlaubt Xcode jedoch nicht, auch eine .XIB-Datei zu erstellen, um sie mit dem Storyboard-Editor zu entwerfen, wie es zum Beispiel bei benutzerdefinierten UITableViewCell
der Fall ist.
In diesem kurzen Beitrag zeige ich Ihnen, wie Sie benutzerdefinierte UIView
mit einer .XIB
-Datei entwerfen können.
Erstellen Sie eine Swift-Klasse
Der erste Schritt ist die Erstellung einer .swift
-Datei für Ihre UIView
. Etwa so:
import UIKitclass CustomView: UIView {}
Erstellen .XIB-Datei
Dann fügen Sie die neue Datei zu Ihrem Projekt hinzu und wählen unter „User Interface“ die Option „View“:
Verwenden Sie den gleichen Namen wie für Ihre Unterklasse, in diesem Fall CustomView
.
Standardmäßig wird die Vorschau als ganzes Gerät angezeigt. Sie können dies jedoch im Größeninspektor ändern. Wählen Sie unter „Simulierte Metriken“ als „Größe“ „Freiform“ und wählen Sie unten z.B. iPhone 8, um die Sicherheitsbereiche von iPhones mit einer Kerbe loszuwerden.
Jetzt können Sie die Größe der Ansicht frei ändern und annähern, wie sie im Gebrauch aussehen wird.
Um die CustomView.xib
mit unserer Klasse zu verbinden, wählen Sie die „Ansicht“ in der Dokumentgliederung aus, wechseln in den Identity Inspector und geben als „Klasse“ die „CustomView“ ein.
Das ist alles! Sie können nun Ihre Ansicht entwerfen und @IBOutlet
s mit der Klasse verbinden.
Verwenden der CustomView
Um eine Instanz der CustomView
mit der .xib
Datei zu erstellen, fügen Sie diese Methode hinzu:
Sobald Sie einen benutzerdefinierten Initialisierungscode benötigen, können Sie eine setupView
Methode erstellen und diese vor der Rückgabe der view
aufrufen:
Danke fürs Lesen!
Haben Sie eigene Möglichkeiten, wiederverwendbare Ansichten zu erstellen? Lassen Sie es mich wissen 🙂
—
Müssen Sie sich auf Ihr iPhone konzentrieren? Holen Sie sich die kostenlose WebBlock-App für die zeitgesteuerte Blockierung von Websites aus dem App Store!