3

我最近一直在 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()
    }

}
4

2 回答 2

7

用于对齐子视图,VStack(alignment:...)但您只有一个子视图,因此无需对齐

默认情况下,所有堆栈都紧贴内容(只需将 .border 添加到您的测试 VStack/s 即可看到结果,因此没有可移动内容的区域。

你所期望的可以通过在堆栈中提供帧对齐来解决,提供屏幕范围的区域:

演示

VStack {
    Text("Hello, World!")
}.frame(maxWidth: .infinity, alignment: .trailing)

PS SwiftUI 仍然有很多错误,但不在这里 :)

于 2020-07-08T15:03:07.583 回答
0

这可以通过Spacer.

对齐引导:

var body: some View {
        HStack {
            Text("Hello, World!")
            
            Spacer()
        }
    }

对齐尾随:

var body: some View {
        HStack {
            Spacer()
            
            Text("Hello, World!")
        }
    }
于 2020-07-26T10:33:32.843 回答