2

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 ポイント上に移動します。

レイアウトを手動で修正する興味深い方法は、通知センターをプルダウンし始めることです。レイアウトと安全領域の高さが自動的に修正されます。

レイアウト自体を修正する方法についてのアイデアはありますか?

4

1 に答える 1