Wat is SwiftUI?

  • vrijdag 21 juni 2019, geschreven door Julian de Lange

Elk jaar organiseert Apple begin juni de WWDC, Apple’s eigen event voor software ontwikkelaars. In aanloop van het event gonst het vaak van de geruchten en lekt er van alles uit maar dit jaar was het opvallend stil. Het leek er dan ook op dat er weinig te verwachten viel, maar niets bleek minder waar. 

Tekst en afbeeldingen door Hans Schaaps.

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/

Ook interessant om te lezen

webuildapps blog 2017 01 flatline onderhoudscontract app webuildapps

Het belang van een app onderhoudscontract

  • donderdag 26 januari 2017

Voor een onderneming is er niets vervelender dan storingen en services die tijdelijk niet beschikbaar zijn; dat kost tijd en geld. Dat zelfde geldt voor de dienstverlening via een app. Terwijl dit in …

webuildapps blog 2015 06 header white label

Whitelabel apps en toch lage onderhoudskosten

  • donderdag 15 mei 2014

Met enige regelmaat krijgen wij klanten aan tafel die nog aan het begin of midden in de conceptfase zitten en een keuze moeten maken voor het laten ontwikkelen van een applicatie. Vaak beschikken zij …

webuildapps blog 2019 03 2019 mobile security locks

Databeveiliging en privacy bij een app: hoe zit dat?

  • donderdag 6 april 2017

Met de opkomst van meer technologie zijn aandachtsgebieden als  databeveiliging en privacy  ook meer en meer in het geding. Een recent voorbeeld is die van de BankGiro-, Postcode- en Vriendenloteri…

ZOEK JE EEN PROFESSIONELE APP BOUWER MET VERSTAND VAN TECHNIEK ÉN BUSINESS?

Wij luisteren naar jouw verhaal en samen gaan we aan de slag om waarde te creëeren voor jouw business. Vanaf de eerste gedachte tot ver voorbij de realisatie. Neem contact op voor een kennismaking of vraag direct een offerte aan!