SwiftUI 3中如何设置system material的模糊强度?
SwiftUI 3 System Material 模糊强度调整方案
- SwiftUI 原生提供的 system material 没有开放直接修改模糊强度的参数,官方预设了5种不同模糊层级的材质枚举,可优先匹配需求选择对应预设:
.ultraThinMaterial:最低模糊程度.thinMaterial:轻度模糊.regularMaterial:中等模糊.thickMaterial:较高模糊程度.ultraThickMaterial:最高模糊程度
如果预设材质无法满足需求,需要自定义模糊强度,可通过封装 UIKit 的 UIVisualEffectView 实现,参考代码如下:
import SwiftUI import UIKit struct CustomBlurView: UIViewRepresentable { // 模糊样式,和系统material对应 var style: UIBlurEffect.Style // 模糊强度取值范围0~1,1为完全模糊 var intensity: CGFloat func makeUIView(context: Context) -> UIVisualEffectView { UIVisualEffectView(effect: nil) } func updateUIView(_ uiView: UIVisualEffectView, context: Context) { // 简单实现:通过alpha调整,适合大部分通用场景 uiView.effect = UIBlurEffect(style: style) uiView.alpha = intensity // 精准无透明度干扰的调整方案(仅支持iOS15+,效果更自然) // uiView.effect = nil // UIView.animate(withDuration: 0) { // uiView.effect = UIBlurEffect(style: style) // } // uiView.layer.speed = 0 // uiView.layer.timeOffset = CFTimeInterval(intensity) } } // 调用示例 struct DemoView: View { var body: some View { // 底层背景可以是任意视图 Image("demo_bg") .overlay { Text("自定义模糊测试") .padding() .background( CustomBlurView(style: .systemMaterial, intensity: 0.4) ) } } }
内容的提问来源于stack exchange,提问作者Vatsal
相关产品推荐
相关产品推荐

