SnapKit für Swift: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist SnapKit und warum wird es benötigt?

\n\n

SnapKit ist eine leistungsstarke und elegante DSL-Bibliothek (Domain-Specific Language) für die Arbeit mit Auto Layout in iOS-, macOS-, tvOS- und watchOS-Anwendungen, die in Swift geschrieben sind. Wenn Sie jemals Einschränkungen (Constraints) manuell mit der standardmäßigen Apple-API geschrieben haben, wissen Sie, wie ausführlich und schwer lesbar das sein kann. SnapKit löst dieses Problem, indem es eine saubere, intuitiv verständliche Syntax bereitstellt, die den Layout-Code wie normale englische Sprache aussehen lässt.

\n\n

Warum wird SnapKit benötigt?

\n
    \n
  • Lesbarkeit des Codes: Anstatt langer Aufrufketten von NSLayoutConstraint(item:attribute:relatedBy:toItem:attribute:multiplier:constant:) schreiben Sie view.snp.makeConstraints { $0.center.equalToSuperview() }.
  • \n
  • Entwicklungsgeschwindigkeit: Das Layouten wird schneller, da der Code kürzer und leichter verständlich ist.
  • \n
  • Typsicherheit: SnapKit verwendet die strenge Typisierung von Swift, was die Wahrscheinlichkeit von Laufzeitfehlern verringert.
  • \n
  • Flexibilität: Alle Funktionen von Auto Layout werden unterstützt: Prioritäten, Seitenverhältnisse, Aktualisierung und Überschreibung von Einschränkungen.
  • \n
  • Aktive Community: Die Bibliothek wird in der Industrie weit verbreitet genutzt, verfügt über eine hervorragende Dokumentation und eine große Anzahl von Beispielen.
  • \n
\n\n

Installation von SnapKit

\n\n

SnapKit kann mit einem der gängigen Abhängigkeitsmanager für Swift installiert werden. Nachfolgend finden Sie Anweisungen für Swift Package Manager (SPM) und CocoaPods.

\n\n

1. Swift Package Manager (empfohlene Methode)

\n

SPM ist der in Xcode integrierte Paketmanager. Dies ist die einfachste und modernste Methode.

\n
    \n
  1. Öffnen Sie Ihr Projekt in Xcode.
  2. \n
  3. Gehen Sie zu File → Add Packages...
  4. \n
  5. Geben Sie im Suchfeld die URL des SnapKit-Repositorys ein: https://github.com/SnapKit/SnapKit.git
  6. \n
  7. Wählen Sie die gewünschte Version aus (empfohlen wird die neueste stabile Version) und klicken Sie auf Add Package.
  8. \n
  9. Stellen Sie sicher, dass das Paket zu Ihrem Ziel (Target) hinzugefügt wurde.
  10. \n
\n\n

2. CocoaPods

\n

Wenn Sie CocoaPods verwenden, fügen Sie die folgende Zeile zu Ihrer Podfile hinzu:

\n
platform :ios, '12.0'\nuse_frameworks!\n\ntarget 'YourAppTarget' do\n  pod 'SnapKit', '~> 5.6.0'\nend
\n

Führen Sie anschließend den Befehl pod install im Terminal im Ordner Ihres Projekts aus.

\n\n

3. Carthage (weniger verbreitet)

\n

Fügen Sie zur Cartfile hinzu:

\n
github "SnapKit/SnapKit" ~> 5.6.0
\n

Führen Sie carthage update aus und fügen Sie das Framework zum Projekt hinzu.

\n\n

Schnellstart mit einem Codebeispiel

\n\n

Lassen Sie uns einen einfachen Bildschirm mit einem zentrierten roten Quadrat erstellen. Dies ist das klassische "Hello, World!" für das Layouten.

\n\n
import UIKit\nimport SnapKit\n\nclass ViewController: UIViewController {\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        setupUI()\n    }\n\n    private func setupUI() {\n        // 1. View erstellen\n        let redView = UIView()\n        redView.backgroundColor = .red\n        view.addSubview(redView)\n\n        // 2. SnapKit für das Layout anwenden\n        redView.snp.makeConstraints { make in\n            make.center.equalToSuperview() // Zentriert relativ zum Eltern-View\n            make.width.height.equalTo(100) // Breite und Höhe = 100\n        }\n    }\n}
\n\n

Was passiert hier?

\n
    \n
  • redView.snp.makeConstraints ist der Einstiegspunkt in die SnapKit-DSL. snp ist eine spezielle Eigenschaft, die SnapKit zu allen UIView hinzufügt.
  • \n
  • Innerhalb des Closures erhalten wir das Objekt make (ConstraintMaker), mit dem wir die Einschränkungen beschreiben.
  • \n
  • make.center.equalToSuperview() zentriert die rote View horizontal und vertikal in ihrem übergeordneten View.
  • \n
  • make.width.height.equalTo(100) setzt sowohl die Breite als auch die Höhe auf 100 Punkte.
  • \n

Empfehlungen