首页 > 解决方案 > SwiftUI HStack 垂直对齐不起作用?

问题描述

我有以下代码:

HStack(alignment: VerticalAlignment.top) {
    Button("x"){
        self.errorText = ""
    }
    //Spacer()
}

我需要找到顶部的按钮。但是按钮仍然在 HStack 视图的中心。

在此处输入图像描述

我做错了什么?

PS:Spacer()在这个地方使用对我来说不是解决方案。我需要完全对齐。


非必要部分:

@State var errorText: String = "Some long error text long long long long long long long long long long long long long long long long long long long long"

        VStack{
            Spacer()
            HStack{
                Text("Error: \(errorText)")
                Spacer()
                HStack(alignment: VerticalAlignment.top) {
                    Button("x"){
                        self.errorText = ""
                    }
                    //Spacer()
                }
            }
            .frame(minHeight:10)
            .padding(.all, 5)
        }

我不知道 VStack(HStack 父级)的高度,因为我不知道错误文本的大小;

Spacer() 不是解决方案,因为它使 VStack 高度达到窗口高度。

标签: swiftalignmentvertical-alignmentswiftui

解决方案


您应该对齐外部HStack。内的也是没用的。所以你可以摆脱它。

VStack{
    Spacer()
    HStack(alignment: .top) {
        Text("Error: \(errorText)")
        Spacer()
        Button("x"){ self.errorText = "" }
    }
    .frame(minHeight:10)
    .padding(.all, 5)
}

推荐阅读