我想模糊一个视图的背景,但不想闯入UIKit来完成它(例如UIVisualEffectView).我正在翻文档,但什么都没有,似乎没有办法实时剪辑背景并对其应用效果.是我错了,还是我看错了?

推荐答案

1. The Native SwiftUI way:

只需在任何需要模糊的地方添加.blur()个修改器,比如:

Image("BG")
   .blur(radius: 20)

Blur Demo Note the top and bottom of the view

Note that你可以将Group个视图模糊在一起.


2. The Visual Effect View:

您可以从UIKit中购买Perfict UIVisualEffectView:

VisualEffectView(effect: UIBlurEffect(style: .dark))

有了这个小 struct :

struct VisualEffectView: UIViewRepresentable {
    var effect: UIVisualEffect?
    func makeUIView(context: UIViewRepresentableContext<Self>) -> UIVisualEffectView { UIVisualEffectView() }
    func updateUIView(_ uiView: UIVisualEffectView, context: UIViewRepresentableContext<Self>) { uiView.effect = effect }
}

VEV Demo


3. iOS 15: Materials

您可以使用带有单行代码的iOS预定义material :

.background(.ultraThinMaterial)

Demo

Swift相关问答推荐

Observable.create 捕获行为

更改 SwiftUI 中按钮矩阵的填充 colored颜色

在Swift中如何用变量计算0.9的立方

带有可选字符串作为键路径的 SwiftUI iOS16 表

如何使一个 Reality Composer 场景中的分组对象可拖动?

如何将视图添加到多行文本视图的末尾?

Swift // Sprite Kit:类别位掩码限制

确定路径是否相交的有效方法

如何删除 macOS 中的所有命令?

Swift - 订阅视图之外的绑定值

闭包 - deinit self 对象的时间

如何在 SwiftUI 中获取视图的位置

如何使用 Swinject 注册符合 ObservableObject 的协议?

如何在 Swift 中将 XPC 自定义类列入白名单?

Alamofire 会自动存储 cookie 吗?

iOS Swift - 如何更改表格视图的背景 colored颜色 ?

在 ViewController 的 UICollectionView 中拉取刷新

如何快速制作虚线?

Swift 覆盖实例变量

如何在 Swift 中重写 setter