如何在 SwiftUI 中使用动画模糊视图?
How to blur View with Animation in SwiftUI?
我正在根据 Scene Phase
模糊视图。我还添加了 withAnimation { ... }
,但是 Blur-Transition
发生时没有任何动画。查看我的代码:
@main struct ExampleApp: App {
@Environment(\.scenePhase) var scenePhase
@State private var blurRadius: CGFloat = 0
var body: some Scene {
WindowGroup {
RootView()
.blur(radius: blurRadius)
.onChange(of: scenePhase, perform: { value in
switch value {
case .active : withAnimation { blurRadius = 0 }
case .inactive: withAnimation { blurRadius = 15 }
@unknown default: print("Unknown")
}
})
}
}
}
有没有人知道为什么 Blur-Status
没有任何 Animation
的变化?
感谢您的帮助。
尽管此行为似乎无法作为 App
中的根节点正常工作,但如果您移动模糊和动画 似乎可以正常工作 里面 View
:
struct RootView: View {
@Environment(\.scenePhase) var scenePhase
@State var blurRadius : CGFloat = 0
var body: some View {
Text("Hello, world!")
.blur(radius: blurRadius)
.onChange(of: scenePhase, perform: { value in
switch value {
case .active : withAnimation { blurRadius = 0 }
case .inactive: withAnimation { blurRadius = 15 }
@unknown default: print("Unknown")
}
})
}
}
我正在根据 Scene Phase
模糊视图。我还添加了 withAnimation { ... }
,但是 Blur-Transition
发生时没有任何动画。查看我的代码:
@main struct ExampleApp: App {
@Environment(\.scenePhase) var scenePhase
@State private var blurRadius: CGFloat = 0
var body: some Scene {
WindowGroup {
RootView()
.blur(radius: blurRadius)
.onChange(of: scenePhase, perform: { value in
switch value {
case .active : withAnimation { blurRadius = 0 }
case .inactive: withAnimation { blurRadius = 15 }
@unknown default: print("Unknown")
}
})
}
}
}
有没有人知道为什么 Blur-Status
没有任何 Animation
的变化?
感谢您的帮助。
尽管此行为似乎无法作为 App
中的根节点正常工作,但如果您移动模糊和动画 似乎可以正常工作 里面 View
:
struct RootView: View {
@Environment(\.scenePhase) var scenePhase
@State var blurRadius : CGFloat = 0
var body: some View {
Text("Hello, world!")
.blur(radius: blurRadius)
.onChange(of: scenePhase, perform: { value in
switch value {
case .active : withAnimation { blurRadius = 0 }
case .inactive: withAnimation { blurRadius = 15 }
@unknown default: print("Unknown")
}
})
}
}