Funktionsfähigkeit prüfen Die in Teil 1 und Teil 2 dieser Artikelreihe erzeugte TSCameraView ist bereits weit fortgeschritten. Über sie lässt sich auf die Kamera eines iPhone zugreifen, ein Bild aufnehmen sowie jenes Bild weiter verarbeiten. In diesem Artikel stelle ich euch eine kleine aber feine Optimierung vor, die den Einsatz von TSCameraView weiter verbessert. Eine neue Type Property namens canCaptureImages prüft, ob die Hardware-Voraussetzungen zur Aufnahme von Fotos auf dem zugrundeliegenden Endgerät erfüllt sind. Solch eine Prüfung war früher vor allen Dingen in Bezug auf den iPod touch spannend, der nicht immer eine Kamera besaß. Griff eine App nun auf…
Bild aufnehmen und verarbeiten Im ersten Teil dieser Reihe begannen wir mit der Integration eines UIImagePickerController in SwiftUI. Diese bestehende Integration erweitern wir nun um einen Coordinator, mit dessen Hilfe wir ein aufgenommenes Bild auslesen und an SwiftUI weiter reichen können. Betrachten wir zunächst einmal die Ausgangslage aus dem ersten Teil der Artikelreihe. Hier kommt das UIViewControllerRepresentable-Protokoll zum Einsatz, um eine UIImagePickerController-Instanz in SwiftUI zu integrieren. Um ein aufgenommenes Bild auswerten zu können, braucht es zusätzlich eine Implementierung des UIImagePickerControllerDelegate-Protokolls. Einen solchen Delegate weist man einer UIImagePickerController-Instanz über deren delegate-Property zu. Hat der Nutzer ein Bild aufgenommen oder bricht er…
Im Zuge eines Projekts stießen meine Kollegen und ich auf das folgende Problem: Ist ein TextEditor Teil einer Form-View, scrollt jene Form-View nicht automatisch zum TextEditor, wenn dieser den Fokus erhält. Das führt dazu, dass die virtuelle Bildschirmtastatur sich unter iOS über den aktiven TextEditor legt, wenn dieser sich als Teil einer Form-View am unteren Bildschirmrand befindet. Ein Beispiel, mit dem ihr diese Problematik nachvollziehen könnt, zeigt das folgende Listing. Wechselt ihr darin in die Zelle des Text-Editors, überlagert die erscheinende Bildschirmtastatur den Eingabebereich. Man muss manuell nach unten scrollen, um den Text-Editor sehen zu können. Um das Problem zu…
Grundlagen Bis heute fehlt SwiftUI (leider) ein direkter Zugriff auf die Kamera des iPhone. Erfreulicherweise ist es aber ein überschaubarer Aufwand, mittels Representable die UIKit-Elemente zum Kamerazugriff auch in SwiftUI verfügbar zu machen. Die Grundlage stellt diesbezüglich die Klasse UIImagePickercontroller dar. Diese Klasse ist bereits seit iOS 2 Teil von UIKit und ermöglicht es in wenigen Schritten, die Kamera eines iPhone aufzurufen, ein Bild zu erstellen und dieses im Anschluss weiter zu verarbeiten. Da es sich bei UIImagePickerController um eine Subklasse von UIViewController handelt, lässt er sich mithilfe des UIViewControllerRepresentable-Protokolls in SwiftUI einbinden. Die Grundlage dafür zeigt das folgende Listing:…
Passend mit der Veröffentlichung der zweiten Auflage meines Swift-Handbuchs verabschiedet sich der Sillmann für dieses Jahr in die Winterpause. In den kommenden Wochen arbeite ich noch ausschließlich an meinen verschiedenen App-Projekten und genieße im Anschluss zwischen den Jahren ein paar freie Tage. Anfang Januar geht es dann mit der Arbeit direkt wieder weiter. Inzwischen hat der Let’s Code-Blog sage und schreibe drei Jahre (!) auf dem Buckel und verzeichnet jährlich über 10.000 Besucher. Die Community rund um den Blog und meinen zugehörigen YouTube-Kanal wächst stetig, Kommentare und Diskussionen nehmen immer mehr zu. In dieser Hinsicht habe ich mich insbesondere über…
Auf meinem YouTube-Kanal sind im vergangenen Monat die folgenden neuen Videos und Inhalte erschienen. Viel Spaß beim Stöbern! Euer Thomas Neue Style-Deklarationen Die neue SwiftUI-Version vereinfacht die Syntax zum Setzen der verschiedenen View-Styles. Materials Materials ermöglichen neue Konfigurationsmöglichkeiten für User Interfaces. Alerts Mit Xcode 13 stellt SwiftUI neue Möglichkeiten zur Verfügung, um Alerts zu erzeugen und anzuzeigen. Let’s Talk 40 Dann lasse ich mal diese kleine Bombe platzen: Am 10. Dezember 2021 erscheint die zweite und aktualisierte Auflage des Swift-Handbuchs. Mehr dazu im Video. 🙂 Confirmation Dialogs Neben Alerts werden nun auch Action-Sheets mithilfe eines neuen Modifiers in SwiftUI erzeugt…
async let Bei async let handelt es sich um eine neue Syntax in Swift 5.5. Sie ermöglicht es, Aktionen parallel ablaufen zu lassen. Die Funktion, die einen oder mehrerer solcher async let-Tasks erzeugt, führt alle nachfolgenden Befehle unmittelbar aus. Erst, wenn das Ergebnis einer async let-Operation tatsächlich benötigt wird, wartet die Funktion auf jenes Ergebnis. Um den Einsatz von async let zu erläutern, dient das nachfolgende Listing als Grundlage. Es stellt eine Funktion downloadPhotos() dar, über die drei Bilder über eine weitere Funktion namens downloadPhoto(_:) heruntergeladen werden. Diese Implementierung der downloadPhotos()-Funktion sorgt dafür, dass jedes der drei Bilder nacheinander heruntergeladen…
In diesem Artikel möchte ich auf ein Herzensprojekt aufmerksam machen, das schon sehr bald in den Regalen deutscher Buchhändler zu finden sein wird: Bereits am 10. Dezember 2021 erscheint die zweite und aktualisierte Auflage meines Swift-Handbuchs! Und ich bin sehr froh, nach sehr vielen Wochen und Monaten des Schreibens zum ersten Mal ganz konkret über das Buch zu berichten. Fokus auf SwiftUI In der zweiten Auflage geht der bisherige Fokus weg von AppKit, UIKit und WatchKit hin zu SwiftUI. Das dürfte kaum überraschen, beschäftige ich mich doch schon seit dem Start im Jahr 2019 intensiv mit Apples neuem UI-Framework. Darüber…
Materials Mit Materials gibt es in SwiftUI neue Möglichkeiten, Hintergründe für Views zu erzeugen. Materials orientieren sich hierbei am Inhalt, der hinter einer View liegt, und lassen diesen Inhalt ein wenig hindurch scheinen. Wie stark der Hintergrund zu sehen ist, hängt vom verwendeten Material ab. Insgesamt stehen die folgenden Materials zur Verfügung (es handelt sich bei den genannten Elementen um Type Properties der neuen Structure Material): ultraThinMaterial lässt den Hintergrund einer View am stärksten durchscheinen, ultraThickMaterial am wenigsten. Um ein solches Material auf eine View anzuwenden, übergibt man dem background(_:)-Modifier eine passende Instanz. Ein Beispiel zeigt das folgende Listing. Es…
Auf meinem YouTube-Kanal sind im vergangenen Monat die folgenden neuen Videos und Inhalte erschienen. Viel Spaß beim Stöbern! Euer Thomas Keyboard-Toolbar Die neue Keyboard-Toolbar in SwiftUI ermöglicht es, Views oberhalb der virtuellen Bildschirmtastatur von iOS zu platzieren. Text Selection Dank des neuen textSelection(_:)-Modifiers ist es möglich, Textinhalte aus SwiftUI-Views zu selektieren (um sie beispielsweise zu kopieren oder zu teilen). Inaktive interaktive Liste Die neuen interaktiven Listen in SwiftUI lassen sich auch dazu verwenden, Daten lediglich anzuzeigen und nicht zu bearbeiten. Markdown-Support in Text-Views Mit Xcode 13 ist es möglich, Inhalte von Text-Views mittels Markdown zu formatieren.