从其他方法中删除子视图

时间:2015-02-11 10:43:44

标签: ios swift view uiblureffect uivisualeffectview

我从一个方法初始化UIVisualEffectView,需要用其他方法删除它。

func showBlur() {
    let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
    let blurView = UIVisualEffectView(effect: blurEffect)
    // ...
}
func destroyBlur {
    // i can’t destroy via remove from superview it here, blurView was initialized in showBlur()
}

我试图在方法中启动blurView但在类中...在UIViewController中有init()的问题。

我试图在view.subViews中找到该视图,但我没有运气。

我尝试将标记设置为UIView,但最近在子视图列表中找不到该标记。

2 个答案:

答案 0 :(得分:4)

您可以创建属性以在类的开头存储UIVisualEffectView:

var blurView: UIVisualEffectView!

并在showBlur()函数中,sto此变量中的效果:

let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
blurView = UIVisualEffectView(effect: blurEffect)

并在destroyBlur()中调用:

blurView.removeFromSuperview()

答案 1 :(得分:1)

如果我正确理解了这个问题,问题是你没有在showBlur()之外引用blurView。

如果这是问题,那么您需要为blurView创建一个类成员(类属性)。

您可能希望将此属性设置为可选属性,因为它似乎可能会或可能不会在以后设置。

这样的事情可能会起作用

var blurView:UIVisualEffectView?

稍后在您的代码中:

func showBlur() {
    let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
    blurView = UIVisualEffectView(effect: blurEffect)
    // ...
}
func destroyBlur {
    blurView!.removeFromSuperview();
}