Middle
Co je to matchedGeometryEffect ve SwiftUI?
sobes.tech AI
Odpověď od AI
matchedGeometryEffect ve SwiftUI je modifier, který umožňuje plynulé animace změny velikosti a polohy pohledů při jejich přesunu mezi různými hierarchiemi nebo kontejnery.
Základní principy:
- Shoda identifikátorů: Udáváte stejný
idpro pohledy, které chcete při přechodu animovat. - Zdroj a cíl: Určujete
namespace, který tyto pohledy spojuje. - Automatická animace: SwiftUI automaticky vypočítá mezistavy a animuje přechod z jednoho stavu do druhého.
Použití:
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()
}
}
}
}
}
}
V tomto příkladu RoundedRectangle mění velikost a barvu při přepínání mezi stavy isExpanded, používající matchedGeometryEffect s identifikátorem "box" a namespace. SwiftUI automaticky animuje tuto změnu.