var body: some View {
VStack(alignment: .leading) {
Text("Title")
.bold()
.font(Font.custom("Helvetica Neue", size: 36.0))
...
Button(action: {}){
Text("Create")
.bold()
.font(Font.custom("Helvetica Neue", size: 24.0))
.padding(20)
.foregroundColor(Color.white)
.background(Color.purple)
.cornerRadius(12)
}
}.padding(20)
}
我希望这两个特定元素具有不同的对齐方式。标题必须前导对齐,但另一方面按钮位于中间。现在,我将VStack对齐方式设置为Leading。我对Swift UI不太熟悉,因此第一个想法是使用多个具有不同对齐方式的垂直堆栈,但是我认为这样做可以更容易。如果我在按钮上添加了对齐指南,那么它也不起作用。
答案 0 :(得分:5)
我将在下面的演示中使用包含的HStack
var body: some View {
VStack(alignment: .leading) {
Text("Title")
.bold()
.font(Font.custom("Helvetica Neue", size: 36.0))
HStack {
Spacer()
Button(action: {}){
Text("Create")
.bold()
.font(Font.custom("Helvetica Neue", size: 24.0))
.padding(20)
.foregroundColor(Color.white)
.background(Color.purple)
.cornerRadius(12)
}
Spacer()
}
}.padding(20)
}
答案 1 :(得分:2)
您可以为此使用GeometryReader
根据其自身大小和坐标空间定义其内容的容器视图。
https://developer.apple.com/documentation/swiftui/geometryreader
GeometryReader { geometry in
VStack(alignment: .leading) {
Text("Title")
.bold()
.font(Font.custom("Helvetica Neue", size: 36.0))
Button(action: {
}) {
Text("Create")
.bold()
.font(Font.custom("Helvetica Neue", size: 24.0))
.padding(20)
.foregroundColor(Color.white)
.background(Color.purple)
.cornerRadius(12)
.frame(width: geometry.size.width / 2, height: geometry.size.height / 2, alignment: .center)
}
}.padding(20)
}
答案 2 :(得分:0)
另一种方法是使用具有中心对齐和 maxWidth 的 VStack
。
VStack(alignment: .leading) {
Text("Title")
.bold()
.font(Font.custom("Helvetica Neue", size: 36.0))
VStack(alignment: .center) {
Button(action: {}){
Text("Create")
.bold()
.font(Font.custom("Helvetica Neue", size: 24.0))
.padding(20)
.foregroundColor(Color.white)
.background(Color.purple)
.cornerRadius(12)
}
}.frame(maxWidth: .infinity)
}.padding(20)