SwiftUI VStack对齐错误?

时间:2020-07-08 14:52:14

标签: swift swiftui alignment vstack

最近我一直在SwiftUI中构建应用程序,而今天我注意到VStack Alignment有一些奇怪的行为。无论我使用哪种对齐方式,视图都不会在中心以外对齐。见下文:

VStack(alignment: .trailing, spacing: 0) {
    Text("Hello, World!")
}

enter image description here

VStack(alignment: .center, spacing: 0) {
    Text("Hello, World!")
}

sw

这是在预览和模拟器中执行的操作,我正在尝试将文本对齐到屏幕的右边缘。

完整代码:

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

}

2 个答案:

答案 0 :(得分:4)

VStack(alignment:...)用于对齐子视图,但是您只有一个子视图,因此没有要对齐的

默认情况下,所有堆栈都紧紧容纳内容(只需将.border添加到测试VStack / s中,您会看到结果,因此没有空间可移动内容。

通过在堆栈中提供框架对齐以提供屏幕范围的区域,可以解决您的期望:

demo

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