SwiftUI目标视图的额外元素

时间:2020-04-19 13:24:28

标签: swift swiftui

有人可以解释为什么在图像(蓝色矩形)和导航栏标题(文本一个)之间有两个UI元素(UINavigationBarContentView,UINavigationBarLargeTitleView)吗?

我使用的代码是这样:

let item: ImageNameModel
@State private var image: Image?

var body: some View {
    NavigationView {
        VStack {
            if image != nil {
                image?.resizable().scaledToFit()
            } else {
                Text("Image not loaded")
            }
        }
        .padding([.horizontal, .bottom])
    }
    .navigationBarTitle(Text(item.name))
    .onAppear(perform: loadImage)
}

enter image description here

1 个答案:

答案 0 :(得分:2)

这可能是因为额外的NavigationView。

您不需要NavigationView来包装目的地。

例如,此处带有示例代码:

struct RootView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: DestinationView()) {
                Text("Click here")
            }.navigationBarTitle(Text("Title"))
        }
    }
}

struct DestinationView: View {
    var body: some View {
        NavigationView {
            Text("Destination")
                .navigationBarTitle(Text("Destination"))
        }
    }
}

我得到这样的结果:

Screenshot of

但是,如果我从NavigationView中删除了DestinationView,我得到的结果可能就是您期望的:

enter image description here