📜  中心文本 swiftui - Swift (1)

📅  最后修改于: 2023-12-03 14:48:54.194000             🧑  作者: Mango

中心文本 SwiftUI - Swift

SwiftUI是苹果公司在WWDC 2019推出的全新UI框架,致力于通过声明性的代码方式来构建用户界面。其中,中心文本是如何使用SwiftUI实现的呢?

中心文本的基本使用

在SwiftUI中,我们可以使用Text视图来渲染文本。如果想要将文本居中,只需要将上下文的alignment设置为.center即可:

Text("Hello, World!")
    .font(.largeTitle)
    .fontWeight(.bold)
    .foregroundColor(.blue)
    .multilineTextAlignment(.center)

centered-text

注意,multilineTextAlignment属性并不会直接将文本居中。因为SwiftUI支持多行文本的渲染,我们需要明确告诉它应该如何对齐。

使用GeometryReader居中文本

如果想要将单行文本在视图中居中,我们可以使用GeometryReader来自动计算出视图的大小,然后使用.frame属性来调整Text视图的位置:

GeometryReader { geometry in
    Text("Hello, World!")
        .font(.largeTitle)
        .fontWeight(.bold)
        .foregroundColor(.blue)
        .frame(width: geometry.size.width, height: geometry.size.height, alignment: .center)
}

centered-text-geometry

这里,我们使用GeometryReader获取父视图的size,然后将它传递给Text视图的frame属性。这样,Text视图就会自动水平和垂直居中。

使用ZStack和Spacer居中文本

除了使用GeometryReader之外,我们还可以使用ZStackSpacer来实现居中文本的效果。

ZStack以各种方式叠加视图,并在它们之间创建深度关系。我们可以在ZStack中添加一个Spacer对象,让它强制填充所有剩余的空间。这样,Text视图就会处于居中状态。

ZStack {
    Spacer()
    Text("Hello, World!")
        .font(.largeTitle)
        .fontWeight(.bold)
        .foregroundColor(.blue)
        .multilineTextAlignment(.center)
    Spacer()
}

centered-text-zstack

这里,我们使用两个Spacer视图来将Text视图置于中心位置。这样就可以居中渲染文本。

结论

以上就是SwiftUI中实现中心文本的几种方式。无论你是采用GeometryReader还是ZStack + Spacer的方法,你都可以使用SwiftUI轻松实现居中文本效果。