Форма SwiftUI неправильно позиционируется с помощью Spacer () - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать страницу профиля, в которой внизу есть форма с различными вариантами. Однако, когда я вставляю Spacer() в VStack, форма не перемещается в нижнюю часть экрана, как это должно быть. Я попытался заменить форму на текст, и она работала нормально, двигаясь в нижней части экрана. Поэтому я предполагаю, что это как-то связано с формой.

the current layout

Вот мой код

struct Profile: View {

    @Environment(\.presentationMode) var mode: Binding<PresentationMode>

    var body: some View {

        NavigationView {
            VStack {
                Image(systemName: "person.crop.circle")
                    .resizable()
                    .frame(width: 50, height: 50)
//                    .padding(.top)

                Text("email@email.com")
                    .font(.title)

                Spacer()

                Form {
                    Section {
                        //menuListItem(image: "gear", label: "Settings")
                        menuListItem(image: "questionmark.circle", label: "Help")                     menuListItem(image: "info.circle", label: "About")
                    }

                    Section {
                        HStack {
                            Spacer()
                            Button(action: {
                                UserDefaults.standard.set(false, forKey: "LoggedIn")
                                UserDefaults.standard.set(nil, forKey: "user_id")
                                UserDefaults.standard.set(nil, forKey: "school_id")
                                self.mode.wrappedValue.dismiss()
                            }) {
                                Text("Log Out")
                                    .font(.body)
                                    .foregroundColor(.red)
                            }
                            Spacer()
                        }
                    }
                }  
            }
            .navigationBarTitle("Profile", displayMode: .inline)
        }
    }
}

struct menuListItem: View {

    var image: String
    var label: String

    var body: some View {
        HStack {
            Image(systemName: image)
            Text(label)
                .font(.body)
        }
    }
}

1 Ответ

0 голосов
/ 07 января 2020

Пока нижняя часть формы неизвестна (поскольку форма прокручиваема, а ее элементы начинаются сверху), swiftUI не знает, сколько места должно быть между этими двумя представлениями. Так что Spacer() не помогает.

Попробуйте:

Дайте свою форму: например, .frame(height: 500) или .padding(.top, 400) модификатор.

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