SwiftUI
Apple heeft de afgelopen jaren hard gewerkt aan een aantal nieuwe ontwikkelingen met als hoogtepunt SwiftUI. Met SwiftUI geeft Apple ontwikkelaars een nieuwe manier voor het opzetten van user interfaces.
De layout van de app wordt in bijna alle gevallen opgebouwd in één of meerdere storyboards, een grafische tool waarmee je de schermen van je app in elkaar kunt slepen/klikken. Deze methode werkt in principe prima maar er kleven een aantal nadelen aan die Apple met SwiftUI heeft verholpen. Zo is het gebruik van source control icm storyboards onwerkbaar, storyboards zijn opgebouwd als xml en een kleine aanpassing resulteert in slecht leesbare wijzigingen die lastig te combineren zijn met aanpassing die een collega tegelijkertijd heeft doorgevoerd. Met meerdere mensen aan hetzelfde storyboard werken is dan ook haast onmogelijk. Ondanks dat het opzetten van het storyboard grafisch is moet je als ontwikkelaar de app eerst ‘builden' om het uiteindelijke resultaat te kunnen testen, en het testen van het scherm onder verschillende condities is niet mogelijk.
Met SwiftUI behoud je de mogelijkheid om een scherm grafisch op te zetten alleen resulteert dit nu in schone, leesbare code die ook weer eenvoudig aangepast kan worden om de grafische variant bij te werken. Zonder enige kennis van Swift kan iedereen de onderstaande code begrijpen. Doordat de achterliggende code nu leesbaar is zijn aanpassingen veel eenvoudiger te controleren omdat je in 1 oogopslag kunt zien wat er is gewijzigd.
Een eenvoudige tabel/lijst zou je als volgt op kunnen zetten in SwiftUI:
SwiftUI maakt apps robuuster
Apps zijn de afgelopen jaren steeds complexer geworden en hiermee is ook de kans op bugs gestegen. SwiftUI heeft als doel apps robuuster te maken door ontwikkelaar complexe zaken als bijvoorbeeld (interactieve) animaties uit handen te nemen en door handvaten aan te reiken om schermen zo op te zetten dat deze een “Single source of truth” (state/objectbinding) kennen. In het onderstaande voorbeeld zien we een afbeelding die wanneer er op gedrukt worden wisselt tussen een beeldvullende en in beeld passende modus. Het wisselen van de ene toestand in de andere geschied middels een animatie die ook nog eens interactief is, wat wil zeggen dat wanneer er gedurende de animatie nogmaals op de afbeelding wordt gedrukt deze terug animeert naar de oorspronkelijke status. Door de ‘zoomed’ te prefixen met het @State kenmerk weet SwiftUI welke zaken op scherm bijgewerkt moeten worden om het moment dat de waarde wijzigt.
Elk scherm dat je opzet in SwiftUI resulteert in extra code waarmee je de output van wisselende data kunt testen. De onderstaande code resulteert in 2 varianten van het scherm, de ene gebaseerd op testData[0] en een tweede versie gebaseerd op testData[1]. De mogelijkheden zijn echter groter, zo kun je ook invloeden van aangepaste accessibility settings en darkmode testen of hoe de app toont in Arabische landen waar je van rechts naar links leest. Omdat je dit kunt testen zonder de app daadwerkelijk te starten bespaar je als ontwikkelaar veel tijd.
Zelf aan de slag?
Het is mogelijk om SwiftUI binnen een bestaande app te gebruiken, maar je kunt ook 'oude' storyboard schermen in een nieuwe SwiftUI app gebruiken. Je moet er echter wel rekening mee houden dat SwiftUI alleen beschikbaar is in iOS 13 dat later dit jaar beschikbaar zal komen. Waarschijnlijk wil je als ontwikkelaar ook nog de oudere iOS versies ondersteunen en is het nu nog te vroeg om direct over te stappen, maar de optie is er. Apple heeft een duidelijk signaal afgegeven over welke richting het de komende jaren op wil gaan. Het streven is om minder, maar beter leesbare/robuustere code te schrijven om zo als ontwikkelaar meer tijd te kunnen steken in de unieke eigenschappen die jouw app bijzonder maken. Daarin lijken ze voorlopig geslaagd. Mocht je zelf aan de slag willen gaan dan heb je de laatste beta versies van Xcode 11 en MacOS Catalina nodig, die je op de developer portal van Apple kunt downloaden: http://developer.apple.com/
Inhoud
Gepubliceerd op 21 juni 2019