Swift Academy · leksjon

GeometryReader for adaptive oppsett

Les geometrien til forelderen for å bygge proporsjonale og enhetstilpassede brukergrensesnitt.

Leksjon 4 av 412 trinn

GeometryReader for adaptive oppsett er en gratis leksjon i Swift Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Swift Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Velkommen

`GeometryReader` leser den tilgjengelige størrelsen fra forelderen, slik at du kan bygge oppsett som er proporsjonale med skjermens eller beholderens dimensjoner.

Grunnleggende bruk

```swift GeometryReader { geo in Text("Width: \(Int(geo.size.width))") .frame(width: geo.size.width * 0.8) } ```

Egenskaper i GeometryProxy

`GeometryProxy` tilbyr: • `size: CGSize` — tilgjengelig bredde og høyde • `safeAreaInsets: EdgeInsets` — systemets trygge område • `frame(in:)` — rammen i et angitt koordinatsystem

Proporsjonal størrelsesangivelse

```swift GeometryReader { geo in HStack(spacing: 0) { Color.blue.frame(width: geo.size.width * 0.6) Color.green } } ```

Koordinatsystemer

```swift GeometryReader { outer in VStack { GeometryReader { inner in let f = inner.frame(in: .named("outer")) Text("y: \(Int(f.minY))") } } } .coordinateSpace(name: "outer") ```

Trygt område

```swift GeometryReader { geo in VStack { Spacer() Text("Bottom safe: \(Int(geo.safeAreaInsets.bottom))") .padding(.bottom, geo.safeAreaInsets.bottom) } } ```

Parallakseffekt ved rulling

```swift ScrollView { ForEach(items) { item in GeometryReader { geo in let offset = geo.frame(in: .global).minY Image(item.image).offset(y: offset * 0.3) } } } ```

Preference Keys for kommunikasjon om oppsett

```swift struct HeightKey: PreferenceKey { static var defaultValue: CGFloat = 0 static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = max(value, nextValue()) } } ``` Bruk dette til å kommunisere størrelser fra underordnede visninger oppover i visningshierarkiet.

Når bør GeometryReader unngås

`GeometryReader` fyller som standard all tilgjengelig plass — det kan ødelegge oppsettet hvis det brukes uforsiktig. Foretrekk `.frame(maxWidth:.infinity)` og fleksible stabler når det er mulig.

Alternativ: Layout-protokollen

Swift 5.7+ introduserte `Layout`-protokollen for fullstendig egendefinerte oppsettsalgoritmer uten belastningen som følger med GeometryReader.

Hurtigsjekk

Hva inneholder `GeometryProxy.size`?

Oppsummering

Viktigste punkter: • `GeometryReader { geo in }` leser størrelsen som forelderen tilbyr • `geo.size` — bredde og høyde; `geo.safeAreaInsets` — systemets innvendige marger • `frame(in:)` — posisjon i et navngitt eller globalt koordinatsystem • Bruk PreferenceKeys til å kommunisere størrelser oppover • Foretrekk fleksible oppsett fremfor GeometryReader når det er mulig Kurset er fullført! Neste: Dataflyt i SwiftUI.
Gratis å komme i gang

Lær deg Swift med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
122
Leksjoner
409

Ofte stilte spørsmål

Er leksjonen «GeometryReader for adaptive oppsett» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Swift Academy, inkludert «GeometryReader for adaptive oppsett», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «GeometryReader for adaptive oppsett»?

Les geometrien til forelderen for å bygge proporsjonale og enhetstilpassede brukergrensesnitt. Du øver på Swift Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Swift Academy?

Ingen tidligere erfaring er nødvendig. Swift Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «GeometryReader for adaptive oppsett»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Swift Academy-leksjonen?

Ja. Alle Swift Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om VStack, HStack og ZStack
  2. LazyVGrid og LazyHGrid
  3. Spacer-, Padding- og Frame-modifikatorer
  4. GeometryReader for adaptive oppsett
← Tilbake til Swift Academy