1

我从一种方法初始化 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 但最近在 subView 列表中找不到该标签。

4

2 回答 2

4

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

var blurView: UIVisualEffectView!

并在showBlur()函数中,将效果存储在此变量中:

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

并在 destroyBlur() 调用中:

blurView.removeFromSuperview()
于 2015-02-11T10:51:04.237 回答
1

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

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

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

像这样的东西可能会起作用

var blurView:UIVisualEffectView?

稍后在您的代码中:

func showBlur() {
    let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
    blurView = UIVisualEffectView(effect: blurEffect)
    // ...
}
func destroyBlur {
    blurView!.removeFromSuperview();
}
于 2015-02-11T10:52:17.120 回答