在 NavigationTitle 下添加副标题

Adding a Subtitle under NavigationTitle

假设我有以下代码:

struct SwiftUIView: View {
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello")
                Text("World")
            }
            .navigationTitle("SwiftUI")
        }
    }
}

我想在 SwiftUI 下添加一个较小的字幕。我尝试添加 .navigationSubtitle("") 之类的内容,但它不存在。我也尝试阅读 documentation,它确实提到了 func navigationSubtitle(_ subtitle: Text) -> some View,但我只是不确定如何将其添加到我的代码中。提前致谢!

您可以在 principal 位置添加 ToolbarItem

struct SwiftUIView: View {
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello")
                Text("World")
            }
            // .navigationTitle("SwiftUI") this won't make any changes now
            .toolbar {
                ToolbarItem(placement: .principal) {
                    VStack {
                        Text("title")
                        Text("subtitle")
                    }
                }
            }
        }
    }
}

缺点是它会覆盖导航标题,因此使用 navigationTitle 所做的任何更改都不会显示。

我最终做了一些不同的事情:我没有将“SwiftUI”作为导航标题,而是将它与 body 的其余部分一起放在 VStack 中,如下所示:

struct SwiftUIView: View {
var body: some View {
    NavigationView {
                VStack {
                    
                    //Header
                    VStack(alignment: .leading, spacing: 5) {
                        Text("SwiftUI")
                            .font(.system(size: 35, weight: .semibold, design: .default))
                        Text("Subtitle")
                    }
                    .padding()
                    .padding(.leading, -110) //I'm still not sure how to give it a leading alignment without hardcoding it
                    Divider()
                    Spacer()
                    
                    //Body
                    VStack {
                        Text("Hello")
                        Text("World")
                    }
                    Spacer()
                    
                    //Navbar title
                }
        }
}}

谢谢大家的帮助!

您可以这样做:

.navigationBarItems(leading:
    VStack(alignment: .leading, spacing: 5) {
        Text("SwiftUI")
            .font(.system(size: 35, weight: .semibold, design: .default))
        Text("Subtitle")
    }
 )