1

我在以下布局中实现了SwiftUI

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

在此处输入图像描述

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

VStack { ... }
  .relativeWidth(0.5)

在此处输入图像描述

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

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

4

2 回答 2

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()
        }
    }
}
于 2019-06-06T01:24:20.473 回答
2

它似乎已经居中对齐。让 HStack 知道要占据多少宽度将完美地完成这项工作。@SMP 上面的代码在修改后没有分隔符如下所示:

struct LoginView : View {
    @State var myText: String = ""

    var body: some View {
        HStack {
            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")
                }
            }
            .relativeWidth(0.7)
        }
        .relativeWidth(1)
    }
}
于 2019-06-06T22:51:48.123 回答