最近我一直在SwiftUI中构建应用程序,而今天我注意到VStack Alignment有一些奇怪的行为。无论我使用哪种对齐方式,视图都不会在中心以外对齐。见下文:
VStack(alignment: .trailing, spacing: 0) {
Text("Hello, World!")
}
VStack(alignment: .center, spacing: 0) {
Text("Hello, World!")
}
这是在预览和模拟器中执行的操作,我正在尝试将文本对齐到屏幕的右边缘。
完整代码:
import SwiftUI
struct DemoView: View {
var body: some View {
VStack(alignment: .center, spacing: 0) {
Text("Hello, World!")
}
}
}
struct DemoView_Previews: PreviewProvider {
static var previews: some View {
DemoView()
}
}
答案 0 :(得分:4)
VStack(alignment:...)
用于对齐子视图,但是您只有一个子视图,因此没有要对齐的
默认情况下,所有堆栈都紧紧容纳内容(只需将.border添加到测试VStack / s中,您会看到结果,因此没有空间可移动内容。
通过在堆栈中提供框架对齐以提供屏幕范围的区域,可以解决您的期望:
VStack {
Text("Hello, World!")
}.frame(maxWidth: .infinity, alignment: .trailing)
P.S。 SwiftUI仍然有很多错误,但这里没有:)
答案 1 :(得分:0)
这可以用Spacer
解决。
对齐方式领先
var body: some View {
HStack {
Text("Hello, World!")
Spacer()
}
}
对齐尾部:
var body: some View {
HStack {
Spacer()
Text("Hello, World!")
}
}