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
相关产品推荐
相关产品推荐

