Apputveckling med SwiftUI

5 dagar

Om kursen

Kursen riktar sig till alla som vill komma igång med apputveckling med Apples ramverk SwiftUI.  SwiftUI har stöd för Apples samtliga plattformar, men kursen fokuserar på utveckling för plattformarna iOS och iPadOS, som används i Apples mobila produktserier iPhone, iPad och iPod touch. Kursen förutsätter tidigare programmeringsvana samt kunskaper om programspråket Swift motsvarande kursen Programmera i Swift.

Apputveckling för mobila plattformar är ett stort och ständigt växande område, som inte kan presenteras fullständigt i en enda kurs. Kursen förklarar de centrala delarna i ramverket SwiftUI och lägger tonvikt på viktiga designprinciper och programmeringsregler. Vi bygger en serie appar, dels med en enda vy som kan presentera text, bilder, formulär och listvyer, dels appar med växling mellan olika vyer via t ex navigationslister. Stor tonvikt läggs vid hur layouter görs för att anpassa en app till olika storlekar på apparatens bildskärm, och hur vi stödjer beteenden som skiljer mellan iPhone och iPad i en och samma app. Vi visar också hur appar kan lagra data i det lokala filsystemet, hur en app kan utnyttja webbtjänster tillgängliga via Internet samt hur texter och formaterade värden i en app kan anpassas till olika språk som t ex svenska och engelska. Vi visar också exempel på hur enskilda komponenter från det klassiska ramverket UIKit kan integreras i SwiftUI i fall där SwiftUI ännu saknar ett eget stöd. Kursen bygger på iOS 14 och Swift 5.3.

Kursens teoripass varvas med praktiska övningar i apputveckling. Vi utnyttjar Apples verktyg Xcode, där apputveckling utförs i projekt där applikationen utformas i programspråket Swift och testas i Apples simulator.  Vi visar även hur användargränssnitt kan förhandsgranskas och modifieras via verktyget Canvas i Xcode.


Innehåll

Att utveckla för iOS

  • Att leva med begränsade resurser
  • Restriktioner för tillgång till omvärlden
  • En annnorlunda värld av maskinvara
  • Reglerad distribution av applikationer
  • Ramverket SwiftUI

Ett enkelt projekt i Xcode

  • Projektstrukturen i Xcode
  • Att skapa ett nytt projekt
  • Vikten av att välja målplattform
  • Mallen App
  • Att bygga en enkel skärmlayout
  • Alla element i användargränssnitt är vyer
  • Vyer och modifierare
  • Text, typsnitt och färg
  • Förhandsgranskning i Canvas
  • Arbeta parallellt i källkod och Canvas
  • Att bygga och testa en app i simulatorn

Layout av användargränssnitt

  • Layoutstödet i SwiftUI
  • Deklarativ specifikation av vyer
  • Att bygga en mer komplex skärmlayout
  • Gruppering av vyer med HStack, VStack och ZStack
  • Normala och skräddarsydda tryckknappar
  • Luft och skiljelinjer mellan vyer
  • Reglerat bredd/höjdförhållande för vyer
  • Storleksbegränsningar för vyer
  • Dynamisk storlek med GeometryReader
  • Bakgrundsfärger för vyer
  • Omstrukturera koden för enklare underhåll
  • Konfigurera förhandsgranskning i Canvas
  • Stöd för ljust resp mörkt läge

MVVM-arkitekturen

  • Designprincipen MVVM
  • Model-, View- och ViewModel-skikten i SwiftUI
  • Ansvarsfördelning mellan skikten
  • Ett praktiskt exempel
  • Att reagera på ändring i modellen
  • Reaktiva användargränssnitt
  • Observerbara objekt
  • Gränssnittet ObservableObject och attributet @Published
  • Attributen @StateObject, @ObservedObject och @EnvironmentObject
  • Globala kontra vyspecifika modeller

Bindningar, textfält och dialoger

  • Attributen @State och @Binding
  • Blädderkontroller (Stepper)
  • Begreppet källa till sanning (source of truth
  • Att välja rätt typ av deklaration
  • Textfält (TextField)
  • Skärmtangentbordet
  • Att reagera på gester
  • Meddelandedialoger (Alert)

Listvyer 

  • Listvyer (List)
  • Design av rader i listvyer
  • Bilder och ikoner (Image)
  • Egenskapslistor (property lists
  • Att initiera modelldata från en egenskapfil
  • Kravet på unik identitet
  • Gränssnittet Identifiable och typen UUID
  • Villkorlig layout via if-else- och switch-satser
  • Upprepad layout via ForEach-vyer 
  • Group-vyer
  • Gemensamma modifierare
  • Statiska och dynamiska rader i listvyer
  • Att hantera val i listvyer
  • Exekverande förhandsgranskning i Canvas (live preview)

Navigationsvyer och formulär

  • Navigationsvyer (NavigationView)
  • Navigationslänkar (NavigationLink)
  • Att välja vilken initial vy som visas
  • Formulär (Form)
  • Anpassningar för iPad 
  • Stöd för master-detail-layout

Modellförändrande operationer

  • Stöd för likhetsjämförelse (Equatable)
  • Skräddarsydda textfält
  • Olika skärmtangentbord
  • Att exekvera kod när en vy visas
  • Att anpassa navigationslisten
  • Miljövärden och attributet @Environment
  • Passivering av element i användargränssnitt
  • Åtgärdsdialoger (ActionSheet)
  • Stöd för tillägg och borttag i listvyer
  • Förbättrad kod med Label-vyer
  • Modala vyer
  • Bladvyer (sheets)
  • Popupvyer på iPad

Integration med UIKit

  • Gränssnittet UIViewControllerRepresentable
  • Gränssnittet UIViewRepresentable
  • Kodmallar för inkapsling
  • Designprincipen delegering i UIKit
  • Ett praktiskt exempel: inkapsling av en bildväljare
  • Att begära tillstånd av användaren
  • Att förse simulatorn med bilder

Lagring

  • Appens lokala filsystem
  • Lagring i seriellt format (archiving)
  • Gränssnittet Codable
  • Encoder- och Decoder-objekt
  •  Att skräddarsy vilka egenskaper som ska lagras
  • Lagring i JSON-format

Webbtjänster (web services)

  • REST-baserade webbtjänster
  • Protokollet HTTP
  • Att skapa nätverkssessioner
  • Att skapa en HTTP-transaktion
  • Att hantera ett HTTP-svar
  • Felhantering i webbtjänster
  • Att begränsa osäkra HTTP-transaktioner
  • Att konfigurera Application Transport Security

Nationell anpassning

  • Språkområden (locales)
  • Resurser och resursfiler
  • Att visa text på användarens eget språk
  • Att ge hjälp till översättaren
  • Parameterstyrda resurser
  • Att formatera och tolka belopp korrekt
  • Nationellt korrekt alfabetisk sortering
  • Nationellt beroende egenskapsfiler
  • Varför nationell anpassning även krävs i en svensk app
  • Att testa nationell anpassning

Mål

  • Du ska känna till centrala delar av ramverket SwiftUI.
  • Du ska känna till hur applikationsarkitekturen MVVM tillämpas i SwiftUI.
  • Du ska kunna använda verktyget Xcode för att bygga och testa appar.


Målgrupp

Systemutvecklare som vill lära sig apputveckling med SwiftUI från grunden.

Förkunskaper

Tidigare programmeringsvana och kunskaper om programspråket Swift motsvarande kursen Programmera i Swift krävs. 
Kunskaper om Apples klassiska ramverk UIKit krävs däremot inte.

Beskrivning

Kursen omfattar apputveckling med SwiftUI, med fokus på utveckling för plattformarna iOS och iPadOS. Teori varvas med praktiska övningar i täta pass.

Kursmaterial

  • Egenproducerad kurspärm (vi tillhandahåller ett provavsnitt)
  • ZIP-fil med samtliga illustrationsexempel och lösningsförslag till samtliga övningar





Kurslängd

Fem dagar


© Copyright 2021 HB Bohel Smådatorprodukter. Alla rättigheter reserverade. Alla varumärken och registrerade varumärken tillhör respektive ägare.