SwiftUI视图内容布局意外弹出/跳出?

时间:2019-11-07 21:00:33

标签: ios swift swiftui

当导航到具有表单或列表(分组)的新视图时,内容显示在导航视图标题底部的大约四分之一处,然后“弹出”到正确的位置(大约一半)第二秒之后。十分难看。不确定这是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")
    }

}

2 个答案:

答案 0 :(得分:1)

为节提供标题文本可解决此问题,即使该文本为空白。尽管这会在导航标题和第一行之间留出空隙。

可将样式和列表设置为分组样式。

struct TestView: View {

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

答案 1 :(得分:0)

我遇到了一个问题,该问题是通过NavigationLink从GroupedListStyle列表中推送的。当您这样做时,SwiftUI似乎也将推送的列表视为已分组。在这种情况下,只需重置listStyle即可:

List { ... }.listStyle(DefaultListStyle())