Регулировка ширины / горизонтального выравнивания с помощью SwiftUI - PullRequest
1 голос
/ 06 июня 2019

У меня достигнута следующая раскладка в SwiftUI:

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

enter image description here

Я пытался сделать свой VStack 50% от суперпредставленияпоэтому я добавил следующий модификатор:

VStack { ... }
  .relativeWidth(0.5)

enter image description here

Не совсем 50% суперпредставления, но меня больше интересует достижение горизонтального центрирования,Кто-нибудь знает, как добиться этого в SwiftUI?

Имеется модификатор alignmentGuide(_:computeValue:), но я изо всех сил пытаюсь дать правильные входные данные для удовлетворения компилятора.

Ответы [ 3 ]

5 голосов
/ 06 июня 2019

Я бы использовал несколько проставок и 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()
        }
    }
}
2 голосов
/ 07 июня 2019

Кажется, что уже по центру. Уведомление 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)
    }
}
0 голосов
/ 06 июня 2019

Вы захотите использовать элемент управления SecretField для своего поля пароля вместо простого элемента управления TextField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...