Atualize a IU quando a orientação estiver mudando no SwiftUI

Jan 06 2021

Comecei a aprender SwiftUI. Tento atualizar a interface do usuário quando a orientação muda. Eu adicionei @Environment(\.horizontalSizeClass) var sizeClassem meu modo de exibição e, em seguida, o simulador de iphone atualiza a IU automaticamente quando girado. Mas o simulador de iPad não atualiza a IU quando girado. Você poderia me dizer como atualizar a IU para iPad?

Respostas

nicksarno Jan 06 2021 at 04:27

Se você der uma olhada nas classes de tamanho de dispositivo nas Diretrizes de interface humana, você notará que os iPads têm largura e altura 'Regular' tanto no modo paisagem quanto no modo retrato.

Portanto, quando você usa .horizontalSizeClass, ele funciona tanto no iPhone quanto no iPad, mas o iPad não muda o sizeClass quando é girado.

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

  • Se você definir os tamanhos dos quadros com um GeometryReader, eles serão atualizados automaticamente quando o dispositivo for girado.
  • Também é muito útil apenas definir o .frame (maxWidth :) nas visualizações, de forma que, se o iPad for paisagem, o conteúdo da visualização será limitado. Algo em torno de 715 funciona bem.