Middle
Šta je matchedGeometryEffect u SwiftUI?
sobes.tech АИ
Одговор од АИ
matchedGeometryEffect у SwiftUI је модификатор који омогућава глатку анимацију промене величине и положаја приказа током њиховог премештања између различитих хијерархија или контејнера.
Основни принципи:
- Усклађивање идентификатора: Наведете исти
idза приказе које желите анимирати током прелаза. - Извор и циљ: Одређујете простор имена (
namespace) који повезује ове приказе. - Аутоматска анимација: SwiftUI аутоматски израчунава међустатне и анимира прелаз из једног стања у друго.
Примена:
import SwiftUI
struct ContentView: View {
@Namespace private var namespace
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "box", in: namespace)
.frame(width: 200, height: 200)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
} else {
RoundedRectangle(cornerRadius: 5)
.fill(Color.red)
.matchedGeometryEffect(id: "box", in: namespace)
.frame(width: 50, height: 50)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
}
}
}
}
У овом примеру, RoundedRectangle мења величину и боју приликом преласка између стања isExpanded, користећи matchedGeometryEffect са идентификатором "box" и простор имена namespace. SwiftUI аутоматски анимира ову промену.