Модификатор .transition в SwiftUI - PullRequest
1 голос
/ 14 февраля 2020

Я хочу, чтобы второй прямоугольник (зеленый) поднимался и опускался над первым прямоугольником (красным), когда я нажимаю кнопку

struct ContentView: View {

    @State var visible = false

    var body: some View {
        return HStack {
            Button("button") {
                self.visible.toggle()
            }
            ZStack {

                Rectangle()
                    .frame(width: 100, height: 100)
                    .foregroundColor(Color.red)

                if visible {   
                    Rectangle()
                        .frame(width: 100, height: 100)
                        .foregroundColor(Color.green)
                        .transition(.move(edge: .bottom))
                        .animation(.linear(duration: 2))
                }

            }
        }
    }
}

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

enter image description here

1 Ответ

4 голосов
/ 14 февраля 2020

Просто добавьте zIndex:

struct ContentView: View {

    @State var visible = false

    var body: some View {
        return HStack {
            Button("button") {
                self.visible.toggle()
            }
            ZStack {

                Rectangle()
                    .frame(width: 100, height: 100)
                    .foregroundColor(Color.red)

                if visible {   
                    Rectangle()
                        .frame(width: 100, height: 100)
                        .foregroundColor(Color.green)
                        .transition(.move(edge: .bottom))
                        .animation(.linear(duration: 2))
                        .zIndex(1)
                }

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