• Dynamic Colors nutzen und verstehen Im ersten Teil dieser Reihe habt ihr die Funktionsweise und Wichtigkeit der sogenannten Dynamic Colors für den Dark Mode in iOS 13 kennengelernt. Nun möchte ich euch zeigen, wie ihr diese Dynamic Colors sowohl im Code als auch im Interface Builder einsetzen könnt und wie ihr eure eigenen Dynamic Colors erzeugt und verwendet. Dynamic Colors aus dem iOS-SDK Apple selbst liefert in seinem iOS-SDK bereits eine Vielzahl verschiedener Dynamic Colors mit aus. Die lassen sich einerseits an beschreibenden Namen wie labelColor oder linkColor erkennen, die nicht Aufschluss über die genaue Farbe geben, sondern eher Einsatzzwecke…

  • Die Macht der Dynamic Colors iOS 13 – die neueste Version von Apples Betriebssystem für iPhone und iPod touch – ist letzte Woche in einer ersten finalen Version erschienen. Und mit ihr hält auch der sogenannte Dark Mode Einzug in iOS. Der Dark Mode stellt die Bildschirminhalte in einem dunklen Anstrich dar und ist bereits seit macOS Mojave 10.14 auf dem Mac verfügbar. In dieser Artikelreihe möchte ich euch parallel zu einer Videosammlung auf YouTube die Grundlagen des Dark Mode näher bringen und euch zeigen, wie ihr eure eigenen Apps fit für den Dark Mode macht und worauf hierbei zu…

  • Die finale Veröffentlichung der neuen Swift-Version 5.1 steht kurz bevor. Der Golden Master von Xcode 11 mitsamt Swift 5.1 ist bereits verfügbar und lässt registrierte Apple Developer bereits dessen Neuerungen nutzen. In diesem Artikel möchte ich euch eine Auswahl jener Neuerungen vorstellen. Funktionen mit Implicit Return Den sogenannten Implicit Return kennt man in Swift bereits aus Closures. Er erlaubt es, auf die Angabe des Schlüsselworts return zu verzichten, wenn ein Closure über nur einen einzigen Befehl verfügt der gleichzeitig für die Erzeugung des zurückzugebenden Werts verantwortlich ist. Genau diese Technik steht uns nun mit Swift 5.1 auch in Funktionen und…

  • Kopf- und Fußzeile pro Section definieren Im letzten Artikel dieser Reihe haben wir uns mit dem Erstellen sogenannter Sections innerhalb einer Table-View auseinandergesetzt. Ergänzend dazu zeige ich euch in diesem Beitrag, wie ihr mithilfe des Data-Source auch einen Titel für die Kopf- und Fußzeilen der Sections definieren könnt. Diese Titel werden dann vor der ersten Zelle der Section beziehungsweise am Ende der Section eingefügt und erlauben es, zusätzliche Informationen zu einer Section auszugeben. Zur Erläuterung dient als Basis eine Table-View mit zwei Sections. Die erste Section gibt eine Liste mit verschiedenen Betriebssystemen aus, während die zweite eine kleine Aufstellung von…

  • Es gibt spannende und erfreuliche Nachrichten: Anfang Dezember könnt ihr mich als Speaker auf der heise MacDev antreffen. Dabei handelt es sich um eine Entwicklerkonferenz rund um Apple, ausgerichtet von Mac & i (dem Apple-Magazin des heise-Verlags), heise Developer sowie dem dpunkt.verlag. Sie findet vom 03. bis 05. Dezember in Karlsruhe im Haus der Wirtschaft statt. Ich arbeitete bereits als freier Autor sowohl für heise developer als auch Mac & i und freue mich sehr, dass mein Beitrag für die heise MacDev vom Programmbeirat ausgewählt wurde. Tatsächlich werde ich in diesem Zuge zum ersten Mal als Speaker auf einer Konferenz…

  • Optionals sind bekanntermaßen eines der spannendsten und mächtigsten Sprachmerkmale in Swift. Interessant ist hierbei, wie Optionals intern in Swift abgebildet werden. Denn genau genommen ist die typische Optional-Syntax, wie sie ständig in Swift zum Einsatz kommt, lediglich eine Art Kurzschreibweise. Im Hintergrund kommt ein Typ zum Einsatz, den man normalerweise nie explizit verwendet, aber für die korrekte Funktionsweise von Optionals unabdingbar ist. Optional: eine Generic Enumeration Innerhalb der Swift Standard Library ist ein Typ namens Optional definiert. Dabei handelt es sich um eine Generic Enerumation, also eine Enumeration, die auf einem dynamischen Associated Value basiert. Dieses Prinzip kennt man in…

  • Auf Basis eines jüngst von mir erstellten Videos zu Let‘s Code POP auf YouTube möchte ich euch in diesem Artikel die Möglichkeit vorstellen, einem Typ „nachträglich“ mittels Extension ein Protokoll zuzuweisen. Ich nutze diese Technik sehr exzessiv, um meinen Code besser zu strukturieren und die grundlegende Implementierung eines Typs von dessen Protokolleigenschaften zu trennen. Wie funktioniert‘s? Im Grunde ist diese Technik von Swift gleichermaßen simpel wie mächtig. Ihr könnt jedem verfügbaren Typ außerhalb seiner Deklaration ein Protokoll zuweisen, indem ihr eine Extension dieses Typs erstellt und darüber die Konformität vornehmt. Ein simples Beispiel dazu zeigt das folgende Listing. Darin wird…

  • Eine der häufigsten Anforderungen an eine App ist das Speichern von individuellen Nutzereinstellungen. Egal, ob es hierbei um kosmetische Anpassungen wie ein individuelles App-Icon oder unterschiedliche Themes innerhalb einer App oder interne Daten wie Kontaktinformationen geht: Irgendwie müssen diese Informationen gespeichert und zur späteren Verwendung ausgelesen werden. Für Apple Developer bietet sich für derartige Szenarien seit jeher die Klasse UserDefaults (ehemals NSUserDefaults, unter Objective-C trägt sie noch immer diesen Namen) an. Sie fungiert als Interface zu einer App-internen Datenbank, in der alle Nutzereinstellungen gespeichert werden. Diese Einstellungen werden hierbei in Form von Key-Value-Paaren abgebildet. UserDefaults bietet passende Methoden, um Daten…

  • Liste um Sections ergänzen Im ersten Teil dieser Artikelreihe haben wir uns mit der grundlegenden Erstellung von Table-Views mithilfe von Storyboards beschäftigt. In diesem zweiten Teil setzen wir uns mit den sogenannten Sections auseinander. Die erlauben es uns, die Zellen innerhalb einer Table-View in unterschiedliche Gruppen zu unterteilen. Standardmäßig besitzt jede Table-View genau eine solche Section, in der alle Zellen landen und angezeigt werden. Eine Table-View kann aber alternativ eine beliebige Anzahl solcher Sections besitzen. Anzahl der Sections definieren Möchte man mehr als eine Section in einer Table-View nutzen, muss man zunächst die Methode numberOfSections(in:) des UITableViewDataSource-Protokolls implementieren. Die wird…

  • Structures und Klassen besitzen in Swift viele Gemeinsamkeiten. Das macht gerade Structures im Vergleich zu anderen Programmiersprachen sehr besonders. Sie können in Swift zum Beispiel Stored und Computed Properties sowie Methoden besitzen; Eigenschaften, über die Structures in anderen Programmiersprachen in der Regel nicht verfügen (und sie daher für diese Sprachen nur eingeschränkt nutzbar machen). Nicht so aber in Swift. Generell fallen bei der täglichen Programmierung in vielen Situationen kaum Unterschiede zwischen Structures und Klassen auf. Entsprechend stellt sich die Frage, wann man eher eine Structure und wann eine Klasse einsetzen sollte. Apple hat dazu einen eigenen Artikel auf der Developer-Website…