【问题标题】:How to align a SwiftUI navigationBarTitle to be centered?如何将 SwiftUI navigationBarTitle 对齐以居中?
【发布时间】:2019-08-13 22:33:19
【问题描述】:

如何在 SwiftUI 中将导航栏标题居中?

var body: some View {
    NavigationView {
        .navigationBarTitle("Todo Lists")
    }
}

【问题讨论】:

    标签: swiftui xcode11 ios13


    【解决方案1】:

    .navigationBarTitle 允许三种显示模式 - .large.inline.automatic

    来自文档:

    case automatic
    

    继承上一个导航项的显示模式。

    case inline
    

    在导航栏的标准范围内显示标题。

    case large
    

    在展开的导航栏中显示大标题。

    所以当你说“如何在 SwiftUI 中将导航栏标题居中?”时,这取决于你的意思。您不能将显示模式为 .large 的导航栏标题居中。您也不能左对齐或右对齐显示模式为.inline 的导航栏标题。如果您想要一个居中的导航栏标题,那么您唯一的选择是使用.inline

    var body: some View {
        NavigationView {
            CustomView()
                .navigationBarTitle("Todo Lists", displayMode: .inline)
        }
    }
    

    【讨论】:

      【解决方案2】:

      另外,here 展示了一个很棒的方法。

      当您需要自定义导航栏时,它是完美的选择。关键字.principal用于定位

      NavigationView {
          Text("Hello, SwiftUI!")
              .navigationBarTitleDisplayMode(.inline)
              .toolbar {
                  ToolbarItem(placement: .principal) {
                      HStack {
                          Image(systemName: "sun.min.fill")
                          Text("Title").font(.headline)
                      }
                  }
              }
      }
      

      【讨论】:

      • 最好的答案,这就像一个魅力!谢谢
      【解决方案3】:

      您不能更改标题中的文本格式。但这里有一个变通方法,它将按要求工作(没有大的差距):

      HStack{
          Text("Todo Lists")
      }
      .multilineTextAlignment(.center)
      .font(.largeTitle)
      .padding(.bottom, -15.0)
      NavigationView{
          List{
              ForEach(instrNewOld) { instrIdx in
                  SourceCodeView(cat: instrIdx)
              }
          }
          .navigationBarTitle(Text("no text"), displayMode: .automatic)
          .navigationBarHidden(true)
      }
      

      【讨论】:

        【解决方案4】:

        这是一个选项。使用'navigationBarHidden(true)' 唯一的缺点是它在图像和表格视图之间产生了很大的差距。

        struct ContentView: View{
        var body: some View {
                    VStack
                    {
                        CircleImageView()
                        HeadLineView()
                        NavigationView
                        {
                                List
                                {
                                    Text("Line 1")
                                    Text("Line 2")
                                }
                                .navigationBarHidden(true)
                        }
                    }
                }
            }
        
        struct HeadLineView : View
        {
            var body: some View{
                Text("Headline").bold().font(Font(UIFont.systemFont(ofSize: 30.0)))
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-04
          • 2020-07-16
          • 1970-01-01
          • 2020-02-27
          • 2021-09-26
          • 1970-01-01
          相关资源
          最近更新 更多