You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:06:00