0Pricing
Swift Academy · Lezione

GeometryReader per layout adattivi

Leggere la geometria del contenitore per creare interfacce proporzionali e adattive al dispositivo.

GeometryReader per layout adattivi è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Benvenuto

`GeometryReader` legge la dimensione disponibile dal contenitore padre, consentendo di creare layout proporzionali alle dimensioni dello schermo o del contenitore.

Utilizzo di base

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

Proprietà di GeometryProxy

`GeometryProxy` fornisce: • `size: CGSize` — larghezza e altezza disponibili • `safeAreaInsets: EdgeInsets` — area sicura del sistema • `frame(in:)` — frame in uno spazio delle coordinate specificato

Dimensionamento proporzionale

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

Spazi delle coordinate

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

Area sicura

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

Effetto di scorrimento parallasse

```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 Key per comunicare il layout

```swift struct HeightKey: PreferenceKey { static var defaultValue: CGFloat = 0 static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = max(value, nextValue()) } } ``` Utilizzare questo meccanismo per comunicare le dimensioni delle viste figlie verso l'alto nella gerarchia delle viste.

Quando evitare GeometryReader

`GeometryReader` per impostazione predefinita occupa tutto lo spazio disponibile: se utilizzato senza attenzione, può compromettere il layout. Quando possibile, preferire `.frame(maxWidth:.infinity)` e stack flessibili.

Alternativa: protocollo Layout

Swift 5.7+ ha introdotto il protocollo `Layout`, che consente di definire algoritmi di layout completamente personalizzati senza il sovraccarico di GeometryReader.

Verifica rapida

Che cosa contiene `GeometryProxy.size`?

Riepilogo

Concetti chiave: • `GeometryReader { geo in }` legge la dimensione proposta dal contenitore padre • `geo.size` — larghezza e altezza; `geo.safeAreaInsets` — rientri del sistema • `frame(in:)` — posizione in uno spazio delle coordinate denominato o globale • Utilizzare le PreferenceKey per comunicare le dimensioni verso l'alto • Quando possibile, preferire layout flessibili a GeometryReader Corso completato! Prossimo argomento: flusso dei dati in SwiftUI.

Domande Frequenti

La lezione «GeometryReader per layout adattivi» è gratuita?

Sì — il testo completo di «GeometryReader per layout adattivi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «GeometryReader per layout adattivi»?

Leggere la geometria del contenitore per creare interfacce proporzionali e adattive al dispositivo. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «GeometryReader per layout adattivi»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di VStack, HStack e ZStack
  2. LazyVGrid e LazyHGrid
  3. Modifier Spacer, Padding e Frame
  4. GeometryReader per layout adattivi
← Torna a Swift Academy