Zaktualizuj interfejs użytkownika, gdy zmienia się orientacja w SwiftUI

Jan 06 2021

Zacząłem uczyć się SwiftUI. Próbuję zaktualizować interfejs użytkownika, gdy zmienia się orientacja. Dodałem @Environment(\.horizontalSizeClass) var sizeClassw moim widoku, a następnie symulator iPhone'a automatycznie aktualizuje interfejs użytkownika po obróceniu. Ale symulator iPada nie aktualizuje interfejsu użytkownika po obróceniu. Czy możesz mi powiedzieć, jak zaktualizować interfejs użytkownika na iPada?

Odpowiedzi

nicksarno Jan 06 2021 at 04:27

Jeśli spojrzysz na klasy rozmiarów urządzeń we wskazówkach dotyczących interfejsu użytkownika, zauważysz, że iPady mają „zwykłą” szerokość i wysokość zarówno w trybie poziomym, jak i pionowym.

Więc kiedy używasz .horizontalSizeClass, działa on zarówno na iPhonie, jak i iPadzie, po prostu iPad nie zmienia sizeClass po obróceniu.

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

  • Jeśli ustawisz rozmiary ramek za pomocą GeometryReader, zostaną one automatycznie zaktualizowane po obróceniu urządzenia.
  • Przydatne jest również ustawienie .frame (maxWidth :) na widokach, aby jeśli iPad był ustawiony poziomo, zawartość widoku będzie ograniczona. Gdzieś około 715 działa dobrze.