โจcombining transitions
SwiftUI โฉ Animations โฉ Transitions โฉ combine
โฌ๏ธ ้่ฆ๏ผ .show(if:)
๐ ๅ่๏ผMastering SwiftUI, Ch. 9: Animations & Transitions
struct ContentView: View {
// โญ๏ธ 1. view state for showing/hiding
@State private var show = false
var body: some View {
HStack {
card("Show details", .green)
card("Here is the details", .purple)
// โญ๏ธ 2-1. the transition
// should be associated with an animation, won't work on its own.
.transition(fadeInOut)
// โญ๏ธ 3. insert/remove the view
.show(if: show) // ๐ View + .show(if:)
}
// โญ๏ธ 4. event to trigger the insertion/removal
.onTapGesture {
// โญ๏ธ 2-2. associated animation
withAnimation(.spring()) { show.toggle() }
}
.padding(8)
.border(.secondary)
}
/// โญ๏ธ combining transitions
var fadeInOut: AnyTransition {
AnyTransition
.move(edge: .leading)
.combined(with: .scale)
.combined(with: .opacity)
}
/// card with text
func card(_ text: String, _ color: Color) -> some View {
RoundedRectangle(cornerRadius: 10)
.frame(width: 200, height: 150)
.foregroundColor(color)
.overlay(
Text(text)
.font(.system(.title, design: .rounded))
.bold()
.foregroundColor(.white)
.padding()
)
}
}
SwiftUI โฉ Animations โฉ AnyTransition โฉ combined(with:)
Last updated