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

UIBlurEffect和UIVibrancyEffect实现的模糊背景标签在视图控制器中不显示

问题排查与修复

你的代码存在两个核心问题导致视图无法正常显示,还有一处冗余导入可优化:

  • 模糊效果视图blurView没有设置初始frame,仅配置autoresizingMask不会自动给视图赋初始大小,blurView默认尺寸为0,所有子视图自然不可见。
  • 在viewDidLoad生命周期中,控制器根视图的布局还未最终确定,此时读取self.view.bounds计算中心位置可能出现偏差,建议优先给blurView显式设置初始frame和根视图对齐。
  • 冗余优化:你导入的CoreImage.CIFilterBuiltins在这段代码中没有被使用,可以直接移除。
修正后的完整代码
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        drawBlurAndVibrancyImage()
    }

    func drawBlurAndVibrancyImage () {
        let blurEffect = UIBlurEffect(style: .systemThinMaterial)
        let blurView = UIVisualEffectView(effect: blurEffect)
        // 新增:给blurView设置初始frame和根视图对齐
        blurView.frame = self.view.bounds
        blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        self.view.addSubview(blurView)
        
        let vibEffect = UIVibrancyEffect(blurEffect: blurEffect, style: .label)
        let vibView = UIVisualEffectView(effect: vibEffect)
        
        let lab = UILabel()
        lab.text = "Hello, world!"
        lab.sizeToFit()
        vibView.bounds = lab.bounds
        vibView.center = self.view.bounds.center
        vibView.autoresizingMask = [.flexibleTopMargin, .flexibleBottomMargin, .flexibleLeftMargin, .flexibleRightMargin]
        
        blurView.contentView.addSubview(vibView)
        vibView.contentView.addSubview(lab)
    }
}

内容的提问来源于stack exchange,提问作者Michael May

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:06:03