UIViewControllerRepresentable
がSwiftUIビュー内で使用されるたびにバグが発生しました。フィードバック アシスタントにレポートを提出しましたが、アプリをリリースするには問題を回避する必要があります。
import SwiftUI
struct ContentView: View {
var body: some View {
GeometryReader { geo in
VStack {
Text("geo.size.height: \(geo.size.height), geo.safeAreaInsets.top: \(geo.safeAreaInsets.top)")
.padding()
TestGeo()
}
}
}
}
struct TestGeo: UIViewControllerRepresentable, Equatable {
func makeUIViewController(context: UIViewControllerRepresentableContext<Self>) -> UIViewController { return UIViewController() }
func updateUIViewController(_ viewController: UIViewController, context: UIViewControllerRepresentableContext<Self>) {}
}
バグが発生するために必要でGeometryReader
はありませんが、何が起こっているのかを明らかにする可能性があります。
再現する手順:
縦向きの iPhone 8 Plus シミュレーターのように、ノッチのない iPhone でコードを実行します。シミュレーターを縦向きから横向きに回転します。シミュレーターを横向きから縦向きに回転します。
テキストは次のとおりです。
geo.size.height: 736.0、geo.safeAreaInsets.top: 0.0
しかし読むべきです:
geo.size.height: 716.0、geo.safeAreaInsets.top: 20.0
また、テキスト位置が 20 ポイント上に移動します。
レイアウトを手動で修正する興味深い方法は、通知センターをプルダウンし始めることです。レイアウトと安全領域の高さが自動的に修正されます。
レイアウト自体を修正する方法についてのアイデアはありますか?