如何对齐SwiftUI navigationBarTitle以居中?

时间:2019-08-13 22:33:19

标签: swiftui xcode11 ios13

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

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

3 个答案:

答案 0 :(得分:2)

.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)
    }
}

答案 1 :(得分:1)

您不能更改标题中的文本格式。但是这里有一个解决方法,它将按要求工作(没有大的间隙):

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)
}

答案 2 :(得分:0)

这是一个选项。使用'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)))
    }
}