Aggiorna l'interfaccia utente quando l'orientamento cambia in SwiftUI

Jan 06 2021

Ho iniziato a imparare SwiftUI. Provo ad aggiornare l'interfaccia utente quando l'orientamento sta cambiando. Ho aggiunto @Environment(\.horizontalSizeClass) var sizeClassnella mia visualizzazione, quindi il simulatore di iPhone aggiorna automaticamente l'interfaccia utente quando viene ruotato. Ma il simulatore iPad non aggiorna l'interfaccia utente quando viene ruotato. Potresti dirmi come aggiornare l'interfaccia utente per iPad?

Risposte

nicksarno Jan 06 2021 at 04:27

Se dai un'occhiata alle classi di dimensioni del dispositivo nelle Linee guida dell'interfaccia umana, noterai che gli iPad hanno larghezza e altezza "normali" sia in modalità orizzontale che verticale.

Quindi, quando usi .horizontalSizeClass, funziona sia su iPhone che su iPad, è solo che l'iPad non cambia sizeClass quando viene ruotato.

https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/

  • Se imposti le dimensioni del telaio con un GeometryReader, verranno aggiornate automaticamente quando il dispositivo viene ruotato.
  • È anche molto utile impostare semplicemente il .frame (maxWidth :) sulle visualizzazioni, in modo che se l'iPad è orizzontale, il contenuto della visualizzazione sarà limitato. Da qualche parte intorno al 715 funziona bene.