【解決】Xcode12でGeometryReaderを使うと中央に配置していたはずのViewが左端に寄ってしまう
https://waarumstudy.blogspot.com/2020/09/xcode12geometryreaderview.html
問題の内容
もともとXcode11でSwiftUIを使って開発していたアプリをXcode12で開いたところ、レイアウトが崩れていました。
中央に配置していたはずのViewが画面左に寄ってしまっています。
alignmentやframeのModifierを弄っても真ん中に戻りません。
解決法
端に寄ってしまうViewはGeometryReaderの中に入っていました。
GeometryReader直下のStackに以下のModifier(.frame(~))をつけると真ん中に戻ります。
struct ContentView: View {
var body : some View {
GeometryReader { geo in
ZStack {
SomeView()
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
}
考察
これを参考にしました。
GeometryReaderの仕様変更もしくはバグだと思います。
追加するModifierを見ると縦横の幅を無限大に設定しているみたいですが、これで真ん中に戻る理由はよくわかりません。