SwiftUIビューのコンテンツレイアウトが突然ポップ/ジャンプオン表示されますか?


16

フォームまたはリスト(グループ化)を使用して新しいビューに移動すると、コンテンツはナビゲーションビューのタイトルの下部から約1/4の位置に表示され、約0.5秒後に正しい場所に「ポップ」します。とても醜い。これがSwiftUIのバグか、何か間違って構造化しているのかわかりませんか?

私はこれをシミュレータとデバイスの両方でテストしましたが、同じ結果が得られました。

ナビゲーションリンクの処理方法と関係があると思いますか?ContentViewが表示されると、すべてのナビゲーションリンクが宛先ビューでinit()を呼び出します。私にとってこれは意味がありません。宛先init()は、ユーザーが実際にナビゲーションリンクをクリックした瞬間にのみ呼び出されるべきではありませんか?

私はシートでもこれを試しましたが、グループ化されたスタイルのフォームまたはリストでナビゲーションリンクを使用する場合にのみ、シートには問題がありません。

まったく新しいシングルビューアプリケーションのコード:

struct ContentView: View {

    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView()) {
                Text("Test Link")
            }
        .navigationBarTitle("Content View")
        }
    }

}

struct TestView: View {

    var body: some View {
        Form {
            Text("Test View")
        }
        .navigationBarTitle("Test View")
    }

}

回答:


10

ヘッダーテキストを含むセクションを提供すると、テキストが空白であっても問題が修正されます。これにより、ナビゲーションタイトルと最初の行の間にギャップが残ります。

グループ化されたスタイルのフォームとリストの両方で機能します。

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}

1
この投稿の両方の解決策を試しましたが、まだ起こっています。他に何が起こっているのでしょうか?とても奇妙。
Lkabo

0

GroupedListStyleリストからNavigationLinkを介してプッシュされたリストでこの問題が発生しました。これを行うと、SwiftUIはプッシュされたリストもグループ化されていると見なしているようです。この場合、listStyleをリセットするだけで機能します。

List { ... }.listStyle(DefaultListStyle())
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.