我想要模糊效果作为我的视图的背景,正如我们所知,我们可以模糊视图和里面的内容,但我不想要模糊视图内容,但我想要模糊背景视图来提供玻璃般的模糊效果,如下所示我们知道。我如何在 SwiftUi 中做到这一点?
换句话说,视图的下层将在当前视图上的帧中模糊,该视图设置为当前视图的背景。
小智 3
在 iOS 15 中,您可以使用材质,例如.ultraThinMaterial
.background(.ultraThinMaterial)
Run Code Online (Sandbox Code Playgroud)
但从 iOS 14 开始,虽然可以创建 UIViewRepresentable 并将其放置为背景,但没有 SwiftUI 方法可以实现此目的。
以下代码将创建一个可以用作背景的 UIViewRepresentable:.systemUltraThinMaterial可以更改为任何材质
import SwiftUI
struct BlurView: UIViewRepresentable {
var style: UIBlurEffect.Style = .systemUltraThinMaterial
func makeUIView(context: Context) -> UIVisualEffectView {
return UIVisualEffectView(effect: UIBlurEffect(style: style))
}
func updateUIView(_ uiView: UIVisualEffectView, context: Context) {
uiView.effect = UIBlurEffect(style: style)
}
}
Run Code Online (Sandbox Code Playgroud)
查看扩展名(可选):
extension View {
func backgroundBlurEffect() -> some View {
self.background(BlurView())
}
}
Run Code Online (Sandbox Code Playgroud)
然后在弹出窗口等视图上使用。
.background(BlurView())
Run Code Online (Sandbox Code Playgroud)
或者如果像扩展一样使用
.backgroundBlurEffect()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3454 次 |
| 最近记录: |