我正在研究一种效果,它应该从本质上模糊视图后面的内容,而.ultraThinMaterial正是做到了这一点.然而,除了背景中的模糊内容外,它还添加了浅/白色调或填充.也就是说,附加的图像的内容放在非常暗的背景下,但在上面应用.ultraThinMaterial会使一切变得更亮.

我目前的实现是这样的,我可能得到的最暗的 colored颜色 是通过显式地将环境配色方案设置为光.我试着玩混合模式,但应用它们会消除模糊.有没有办法在没有这种浅色的情况下获得模糊的效果?

import SwiftUI

struct ModalLayoutBackdrop: View {
  var body: some View {
    ZStack {
      content
      VStack {}
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .environment(\.colorScheme, .light)
        .background(.ultraThinMaterial)
    }
  }
}

enter image description here

推荐答案

要在没有浅色的情况下实现模糊效果,请执行以下操作:

使用UIVisualEffectView的自定义模糊视图:您可以创建自定义SwiftUI视图来包装UIKit中的UIVisualEffectView,从而更好地控制模糊效果.这种方法使您能够使用具有适合您需要的样式的UIBlurEffect,潜在地避免了额外的色彩. Swift

struct BlurView: UIViewRepresentable {
    var style: UIBlurEffect.Style = .dark

    func makeUIView(context: Context) -> UIVisualEffectView {
        return UIVisualEffectView(effect: UIBlurEffect(style: style))
    }

    func updateUIView(_ uiView: UIVisualEffectView, context: Context) {
        uiView.effect = UIBlurEffect(style: style)
    }
}

然后,在您的SwiftUI视图中:

struct ModalLayoutBackdrop: View {
    var body: some View {
        ZStack {
            content
            VStack {}
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .background(BlurView(style: .dark))
        }
    }
}

Ios相关问答推荐

滚动时突出显示工具栏项目

如何在SwiftUI中扩展双击的可检测区域?

使用SWIFT传输表示时的条件文件表示格式

AVFoundation Camera推出变焦SWIFT

如何将Safari调试器附加到Turbo-iOS原生应用中的模拟器

SwiftUI Divider过大了其父视图

检测touch 并忽略其他手势SWIFT SceneKit

用于HDR显示的CI上下文选项

SwiftData共享扩展阻止应用程序打开SQLite文件

快速 keys 串更新只有在第二次try 时才起作用

如何将 AppIntent 添加到应用程序目标并在交互式小部件中使用它

NavigationLink 只能在文本部分点击

xcode-select:找不到clang

集成 IDNow SDK 时未找到 Xcode FLAnimatedImage.h 文件问题

来自 c++ 的runtime_error未在 iOS 中捕获

界面生成器中 UIView 的边框 colored颜色 不起作用?

向标签栏控制器添加新标签

在 Xcode 4 中将静态库链接到 iOS 项目

NSPredicate 用于测试 NULL 和空白字符串

在 NSUserDefaults 中保存图像?