Минимальный пример: < /p>
Код: Выделить всё
struct Modal: View {
@Namespace private var modalNamespace
var body: some View {
HStack {
Text("Option 1")
.matchedGeometryEffect(id: "option1", in: modalNamespace)
Text("Option 2")
.matchedGeometryEffect(id: "option2", in: modalNamespace)
}
.frame(maxWidth: .infinity)
.background(
Color.blue
.matchedGeometryEffect(id: "option2", in: modalNamespace, isSource: false)
)
}
}
struct ContentView: View {
@State private var showModal: Bool = false
var body: some View {
ZStack {
Button {
withAnimation {
showModal = true
}
} label: {
Text("Show modal")
}
if showModal {
Color.gray
.onTapGesture {
showModal = false
}
VStack {
Spacer()
Modal()
Spacer()
}
.transition(.move(edge: .bottom))
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... transition
Мобильная версия