SwiftUI не может выровнять кнопку с topLeading - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть button, который я не могу выровнять по левому верхнему углу с помощью topLeading. То, что я надеюсь достичь sh:

What I want

мой код:

var body: some View {
        ZStack {
            ZStack(alignment: .topLeading) {
                Button(action: { self.show.toggle() }) {
                    HStack {
                        Spacer()
                        Image(systemName: "list.dash")
                            .foregroundColor(.black)
                    }
                    .padding(.trailing, 20)
                    .frame(width: 90, height: 60)
                    .background(Color.white)
                    .cornerRadius(30)
                    .shadow(color: Color("buttonShadow"), radius: 10, x: 0, y: 10)
                }
                Spacer()
            }

        }
    }

Но я получаю это:

My work

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Проблема заключается в том, что ваши упаковывающие представления (два ZStack по умолчанию) будут занимать только пространство их содержимого, а это только кнопка. Если вы добавите рамку для расширения оболочки, вы увидите, что выравнивание работает так, как вы ожидаете.

var body: some View {
    ZStack {
        ZStack {
            Button(action: { self.show.toggle() }) {
                HStack {
                    Spacer()
                    Image(systemName: "list.dash")
                        .foregroundColor(.black)
                }
                .padding(.trailing, 20)
                .frame(width: 90, height: 60)
                .background(Color.white)
                .cornerRadius(30)
                .shadow(color: Color.gray, radius: 10, x: 0, y: 10)
            }
            Spacer()
        }
        .frame(
            maxWidth: .infinity,
            maxHeight: .infinity,
            alignment: Alignment.topLeading
        )
    }
}

Screenshot of correct behavior

1 голос
/ 02 апреля 2020

Добавить потребителя фонового пространства, как показано ниже (протестировано с Xcode 11.4)

demo

ZStack(alignment: .topLeading) {
    Color.clear                               // << here !!
    Button(action: { self.show.toggle() }) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...