简体   繁体   English

模糊效果没有出现在UITableViewCell中

[英]Blur effect not appearing in UITableViewCell

I'm trying to add a blur effect to my view. 我正在尝试为视图添加模糊效果。 I created the blur effect like so 我像这样创建了模糊效果

let blurLabel: UIVisualEffectView = {
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)


    return blurEffectView
    }()

Then I add it to the subview like so, and set up the constraints with it as well 然后像这样将其添加到子视图中,并设置约束

 override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
        let view = tableViewCell

        addSubview(view)
        view.addSubview(blurLabel)

 blurLabel.leftAnchor.constraint(equalTo: self.leftAnchor,constant:0).isActive = true
        //blurLabel.topAnchor.constraint(equalTo: self.topAnchor, constant: 178).isActive = true
        blurLabel.widthAnchor.constraint(equalToConstant: 375).isActive = true
        blurLabel.heightAnchor.constraint(equalToConstant: 180).isActive = true

But when I run the application it doesn't appear at all 但是当我运行该应用程序时,它根本没有出现

Edit: As suggested by @HAS & @Fogmeister, you can also use translatesAutoResizingMaskIntoConstraints = false as it is better solution to use Auto Layout without specifying explicit frames. 编辑:根据@HAS和@Fogmeister的建议,您也可以使用translatesAutoResizingMaskIntoConstraints = false因为这是使用自动布局而不指定显式框架的更好解决方案。

You will have to assign frame to UIVisualEffectView like this: 您必须像这样将框架分配给UIVisualEffectView

 let blurLabel: UIVisualEffectView = {
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = CGRect(x: 0, y: 0, width: 60, height: 40) //give desirable frame
    return blurEffectView
 }()

If you would like, instead of giving explicit frames you can also provide your blurView's to any of your view or, subviews. 如果愿意,除了提供明确的框架外,还可以为任何视图或子视图提供blurView。

let blurLabel: UIVisualEffectView = {
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)    
    blurEffectView.frame = myMainview.bounds //Blur effect's frame
    return blurEffectView
}()

override func viewDidLoad() {
    super.viewDidLoad()
    // Use it somewhere using
    self.view.insertSubview(blurEffectView, belowSubview: myAnotherView)
    // You may also use any of the subviews too, instead of the self.view
    /// self.myView.insertSubview(blurEffectView, belowSubview: myAnotherView)
}

To fix this you just have to stop it automatically creating constraints. 要解决此问题,只需停止自动创建约束即可。 Like this... 像这样...

let blurLabel: UIVisualEffectView = {
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    // this line will stop constraints being added for a zero frame
    blurEffectView.translatesAutoResizingMaskIntoConstraints = false
    return blurEffectView
}()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM