Middle
matchedGeometryEffect дар SwiftUI чист?
sobes.tech AI
Ҷавоб аз AI
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 бо идентификатори `