从其他方法中删除子视图
Remove subview from other method
我用一种方法初始化 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()
}
我尝试不在方法中而是在 class 中启动 blurView…UIViewController 中的 init() 有问题。
我试图在 view.subViews 中找到那个视图,但我没有找到。
我尝试将标签设置为 UIView,但最近在子视图列表中找不到该标签。
您可以创建 属性 以将 UIVisualEffectView 存储在 class:
开头
var blurView: UIVisualEffectView!
并且在showBlur()
函数中,sto这个变量中的效果:
let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
blurView = UIVisualEffectView(effect: blurEffect)
并在 destroyBlur() 调用中:
blurView.removeFromSuperview()
如果我正确理解了问题,问题是您没有在 showBlur() 之外引用 blurView。
如果这是问题所在,那么您需要为 blurView 创建一个 class 成员 (class 属性)。
您可能希望将其设为可选 属性,因为它似乎以后可能会或可能不会设置。
类似这样的方法可能有效
var blurView:UIVisualEffectView?
稍后在您的代码中:
func showBlur() {
let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
blurView = UIVisualEffectView(effect: blurEffect)
// ...
}
func destroyBlur {
blurView!.removeFromSuperview();
}
我用一种方法初始化 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()
}
我尝试不在方法中而是在 class 中启动 blurView…UIViewController 中的 init() 有问题。
我试图在 view.subViews 中找到那个视图,但我没有找到。
我尝试将标签设置为 UIView,但最近在子视图列表中找不到该标签。
您可以创建 属性 以将 UIVisualEffectView 存储在 class:
开头var blurView: UIVisualEffectView!
并且在showBlur()
函数中,sto这个变量中的效果:
let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
blurView = UIVisualEffectView(effect: blurEffect)
并在 destroyBlur() 调用中:
blurView.removeFromSuperview()
如果我正确理解了问题,问题是您没有在 showBlur() 之外引用 blurView。
如果这是问题所在,那么您需要为 blurView 创建一个 class 成员 (class 属性)。
您可能希望将其设为可选 属性,因为它似乎以后可能会或可能不会设置。
类似这样的方法可能有效
var blurView:UIVisualEffectView?
稍后在您的代码中:
func showBlur() {
let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
blurView = UIVisualEffectView(effect: blurEffect)
// ...
}
func destroyBlur {
blurView!.removeFromSuperview();
}