如何在swift ui的导航视图中的大标题下方添加副标题?

Posted

技术标签:

【中文标题】如何在swift ui的导航视图中的大标题下方添加副标题?【英文标题】:How to add a subtitle below a large title in a navigation view in swift ui? 【发布时间】:2021-09-17 00:14:40 【问题描述】:

如何在以这种方式定义的大标题下添加副标题?

NavigationView

        VStack()
           //"Some code" 
        
        .navigationTitle("Analytics")

【问题讨论】:

【参考方案1】:

你可以试试这样的:

 NavigationView
            VStack()
                //"Some code"
            
            .navigationBarTitleDisplayMode(.large)
            .toolbar 
                ToolbarItem(placement: .navigationBarLeading) 
                    VStack 
                        Text("Title").font(.largeTitle).bold()
                        Text("Subtitle").font(.subheadline)
                    
                
            
        

【讨论】:

谢谢。你如何让这个 VStack 表现得像一个导航标题?因为向下滚动时 NavigationBar 太小了。它也被压缩在左上角,我正在尝试添加一些间距。【参考方案2】:

似乎“navigationSubtitle”仅适用于 macOS,这是在 ios 中的另一种方式:

        .navigationBarItems(leading: VStack 
            Text("Analytics").font(.largeTitle).bold()
            Text("Subtitle")
        )

编辑更新:

你也可以试试这个,但会丢失一些字体选择:

.navigationTitle("Subtitle") 
.navigationBarItems(leading: Text("Analytics").font(.largeTitle).bold())

【讨论】:

感谢您的解决方案,但有一个小问题:标题和副标题与 navigationTitle 的位置不同。所以 NavigationTitle 的位置有一个空白区域,并且项目被压缩到左上角。因此,向下滚动时,导航栏太小而无法容纳项目。也许使条更大并添加一些填充将是一种解决方法 你可以试试这个,但会丢失一些字体选择:" .navigationTitle("Subtitle") .navigationBarItems(leading: Text("Analytics").font(.largeTitle).bold() )"【参考方案3】:

我找到了我正在寻找的解决方案:基本上创建屏幕顶部,因为它通常没有导航视图,然后在下面添加一个滚动视图。

HStack 
    VStack(alignment: .leading, spacing: 5) 
        Text("Title")
             .font(.largeTitle)
             .foregroundColor(Color(UIColor.label))
             .fontWeight(.bold)
                        
        Text("subtitle")
             .font(.subheadline)
             .foregroundColor(Color(UIColor.label))
     
                
     Spacer()         
 
 .padding()
            
            
            
 ScrollView(.vertical, showsIndicators: false) 
 

【讨论】:

以上是关于如何在swift ui的导航视图中的大标题下方添加副标题?的主要内容,如果未能解决你的问题,请参考以下文章

带有嵌套导航视图的 Swift UI

Swift 中的 Xcode:导航栏未显示在 UI 集合视图(模拟器)中

如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图

如何以编程方式在导航栏正下方添加视图?

使用 NSLayoutConstraints 添加第二个子视图控制器,始终将其放置在导航栏下方,而不是导航栏之后

视图中的按钮未单击 ios swift