使用SwiftUI调整宽度/水平对齐

时间:2019-06-06 00:54:40

标签: swift swiftui

我在SwiftUI中实现了以下布局:

VStack {
  TextField(...)
  TextField(...)
  Button(...)
}

enter image description here

我试图使VStack成为超级视图的50%,所以我添加了以下修饰符:

VStack { ... }
  .relativeWidth(0.5)

enter image description here

不是超级视图的50%,但我对实现水平居中更感兴趣。有谁知道如何在SwiftUI中实现这一目标?

有一个alignmentGuide(_:computeValue:)修饰符可用,但我一直在努力提供正确的输入来满足编译器的要求。

3 个答案:

答案 0 :(得分:5)

我会使用一些垫片和HStack ...

struct LoginView: View {

    @State var myText: String = ""

    var body: some View {
        HStack {
            Spacer()
            VStack {
                TextField($myText, placeholder: Text("Email"))
                    .textFieldStyle(.roundedBorder)
                    .textContentType(.username)

                TextField($myText, placeholder: Text("Password"))
                    .textFieldStyle(.roundedBorder)
                    .textContentType(.password)

                Button(action: {
                    // Do your login thing here
                }) {
                    Text("Login")
                }
            }
             Spacer()
        }
    }
}

答案 1 :(得分:2)

它似乎已经居中对齐了。 让HStack知道要占用多少宽度会完美地完成这项工作。经过修改且不带空格后,@ SMP的上述代码将如下所示:

boolean flag = l.stream().anyMatch(h -> h.equals(str));

答案 2 :(得分:0)

您将希望对密码字段使用SecretField控件,而不是普通的TextField控件。