Press "Enter" to skip to content

Kategorie: SwiftUI

Meine persönlichen Highlights der WWDC23

Die vergangene WWDC war in vielerlei Hinsicht ein spektakuläres Event. Für viele ist – verständlicherweise – die Vorstellung der neuen Apple Vision Pro inklusive visionOS das primäre Highlight. Hier eröffnet sich für uns Entwickler eine gänzlich neue Welt, von der noch gar nicht abzusehen ist, wie sie das Computing in den kommenden Jahren beeinflussen wird. Und wir dürfen und sollen diese spannende neue Welt mitgestalten. Das ist wahrlich ein Highlight, dass Apple in dieser Form in den kommenden Jahren aufgrund…

ObservedObject vs. StateObject

Wenn es um die Integration eigens definierter Model-Klassen in SwiftUI-Views geht, spielen die beiden Property Wrapper ObservedObject und StateObject eine maßgebliche Rolle. Augenscheinlich machen sie mehr oder weniger das selbe: Sie achten auf Änderungen der Model-Instanz und aktualisieren die zugehörige View, sobald solche Änderungen bemerkt werden. Falls man daraus den Schluss zieht, man könne die beiden Property Wrapper beliebig nach eigenem Gusto einsetzen, der irrt. Ob man ObservedObject oder StateObject einsetzt, hängt maßgeblich davon ab, wie eine Model-Instanz in eine…

Model-Logik in SwiftUI-Views

SwiftUI geht – verglichen mit UIKit und AppKit – einen gänzlich anderen Weg, was die Erstellung grafischer Oberflächen betrifft. Einen zentralen Unterschied findet man bereits in der zugrundeliegenden Architektur: Wo UIKit und AppKit auf Controller zurückgreifen, die Views und die zugehörige Model-Logik miteinander verbinden, fehlt in SwiftUI diese Komponente gänzlich. Controller sind kein Teil von SwiftUI und architektonisch auch gar nicht notwendig. Denn Views erhalten direkten Zugriff auf alle Model-Informationen, die sie benötigen, und führen auch Manipulationen direkt am Model…

Mehrere Bilder via PhotosPicker auswählen

Ergänzend zum letzten Artikel, in dem es um die grundlegende Konfiguration und Nutzung der neuen PhotosPicker-View ging, stelle ich euch an dieser Stelle vor, wie ihr mehrere Bilder mittels PhotosPicker auswählen und verarbeiten könnt. Die wichtigste und ausschlaggebende Änderung betrifft den selection-Parameter bei Initialisierung eines PhotosPickers. Um mehrere Bilder auswählen zu können, muss der Parameter einem Binding entsprechen, das auf ein Array von PhotosPickerItem-Instanzen verweist (statt auf ein Optional vom Typ PhotosPickerItem). Die vom Nutzer ausgewählten Bilder landen dann in…

PhotosPicker in SwiftUI 4

Neuerungen der WWDC 2022 – Teil 5 Mit der neuen PhotosPicker-View steht uns jetzt ein natives SwiftUI-Element zur Verfügung, um auf die Foto-Library zugreifen und Bilder auswählen zu können. In diesem Artikel gehe ich auf die grundlegende Funktionsweise von PhotosPicker ein und zeige euch, wie ihr diese neue View nutzen könnt, um ein einzelnes Foto aus der Library auszuwählen und anzuzeigen. Grundlagen PhotosPicker nutzt eine Instanz vom Typ PhotosPickerItem, um die vom Nutzer gewählten Fotos abzubilden. Demnach braucht es ein…

Xcode 14.0: Publishing changes from within view updates is not allowed, this will cause undefined behavior.

Bug oder Feature? Seit dem Release von Xcode 14.0 seid auch ihr möglicherweise auf jene Runtime-Warnung gestoßen, die den Titel dieses Artikels ziert. Es würde mich nicht wundern. Diese Meldung führt aktuell zu einiger Irritation innerhalb der Apple Developer-Community (siehe https://developer.apple.com/forums/thread/711899). Um diese Warnung zu erhalten, müsst ihr nicht allzu viel tun. Der folgende Code ist zu Demonstrationszwecken vollkommen ausreichend. Ihr seht darin eine als ObservableObject deklarierte Klasse Person mit einer Published-Property namens name. Abschließend folgt eine ContentView, die eine…

iOS 16: „Im Web suchen“ unter SwiftUI deaktivieren

„Im Web suchen“ ist ein neues Feature in iOS 16. Es ermöglicht, in Textfeldern und Text-Views selektierten Text direkt an den Browser weiterzugeben und darüber zu suchen. Im Zuge eines Projekts kam die Frage auf, wie sich dieses Feature explizit deaktiveren lässt. Es sollte also verhindert werden, dass ein selektierter Text über die genannte Funktion einfach an den Browser weitergegeben werden kann. Unter UIKit existiert mit UIMenuBuilder ein Protokoll, über das sich solche Informationen recht flexibel steuern lassen. Dem zugrunde…

Grid in SwiftUI 4

Neuerungen der WWDC 2022 – Teil 4 Mit Grid steht ein neues View-Element in SwiftUI zur Verfügung, das es erlaubt, beliebige Views in fixen Reihen und Spalten anzuordnen. Grid ist eine Container-View. Die ihr zugefügten Views werden als Reihen dargestellt. Soll eine Reihe über mehrere Spalten verfügen, nutzt man eine GridRow-Instanz. Auch hierbei handelt es sich um einen Container, der für jede Spalte innerhalb einer Reihe eine eigene View entgegennimmt. Ein simples Beispiel zum Einsatz eines Grids zeigt das nachfolgende…

ViewThatFits in SwiftUI 4

Neuerungen der WWDC 2022 – Teil 3 ViewThatFits ist eine neue Container-View in SwiftUI 4. Sie stellt die erste der ihr zugewiesenen Views dar, die aufgrund ihrer Größe in den zur Verfügung stehenden View-Bereich passt. Die Größe des View-Bereichs hängt hierbei von dynamischen Faktoren wie Bildschirmgröße und Platzierung innerhalb der bestehenden View-Hierarchie ab. Der nachfolgende Screenshot skizziert das Problem, das sich mithilfe von ViewThatFits elegant lösen lässt. Dort ist ein HStack mit verschiedenen Tags zu sehen. Im Querformat auf einem…

Multiline-TextFields in SwiftUI 4

Neuerungen der WWDC 2022 – Teil 2 Textfelder auf Basis der TextField-View sind in SwiftUI bisher auf eine einzige Zeile beschränkt. Soll der Platz zur Eingabe von Text umfangreicher ausfallen, musste alternativ ein TextEditor herhalten. Das ändert sich nun mit SwiftUI 4. TextField verfügt dann über einen optionalen Parameter namens axis. Setzt man für den die Option vertical, vergrößert sich das zugrundeliegende Textfeld automatisch, sobald der Platz für den Inhalt nicht mehr für eine Zeile ausreicht. Generell vergrößert sich das…

Impressum

Thomas Sillmann
Kettererstraße 6
D-63739 Aschaffenburg
USt-ID: DE306231294
E-Mail: contact@thomassillmann.de
Mobil: +49 (0) 151 65125650
Web: https://www.thomassillmann.de/

Inhaltlich Verantwortlicher gemäß §55 Abs. 2 RStV: Thomas Sillmann (Anschrift siehe oben)

Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehme ich keine Haftung für die Inhalte externer Links. Für die Inhalte der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.

Kontakt und soziale Netzwerke

© 2019-2023 by Thomas Sillmann