在下图中,我有一个名字和姓氏。我希望姓氏居中,如中间的蓝线所示,而名字与姓氏左对齐,如第一条蓝线所示。我正在使用GeometryReader
基于总高度的百分比设置垂直位置,但是我不知道如何获取较低的文本位置并将其传递给较高的位置。
struct NameText: View {
var body: some View {
GeometryReader { geo in
VStack {
Text("PETER")
.fontWeight(.bold)
.font(.title)
.foregroundColor(Color(red: 30/255, green: 82/255, blue: 132/255, opacity: 1.0))
.offset(x: 0, y: geo.size.height * -0.75)
Text("PARKER")
.fontWeight(.thin)
.font(.largeTitle)
.offset(x: 0, y: geo.size.height * -0.75)
}
}
}
}
由于字体粗细的差异,需要一些补偿,因此我将提出以下方法
struct NameText: View {
var body: some View {
GeometryReader { geo in
VStack(alignment: .leading) {
Text("PETER")
.fontWeight(.bold)
.font(.title)
.foregroundColor(Color(red: 30/255, green: 82/255, blue: 132/255, opacity: 1.0))
Text("PARKER")
.fontWeight(.thin)
.font(.largeTitle)
.offset(x: -0.5)
}//.border(Color.blue) // << just helper for Pixie verification
}
}
}