从子视图中移除 VisualEffectView
Remove VisualEffectView from subview
我使用布尔条件定义了一个 VisualEffectView
。在这种情况下,当按下按钮时,将使用 active: true
调用此函数
func addVisualEffectView(active: Bool) {
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
if active {
blurEffectView.alpha = 0.5
blurEffectView.frame = self.view.frame
self.view.insertSubview(blurEffectView, at: 2)
} else {
blurEffectView.removeFromSuperview()
}
}
在另一个按钮中,使用 active: false
再次调用此函数,它应该从屏幕上删除 VisualEffectView
子视图,但它没有。你能帮我看看问题出在哪里吗?
如果您添加了一次,然后再次调用您的函数,它不会删除之前添加的视图,只是不会添加新的 UIVisualEffectView
。
您需要能够通过继续使用其 tag
属性.
来跟踪您创建的视图
func addVisualEffectView(active: Bool) {
if active {
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.alpha = 0.5
blurEffectView.frame = self.view.frame
blurEffectView.tag = 332211
self.view.insertSubview(blurEffectView, at: 2)
} else {
self.view.viewWithTag(332211)?.removeFromSuperview()
}
}
我使用布尔条件定义了一个 VisualEffectView
。在这种情况下,当按下按钮时,将使用 active: true
func addVisualEffectView(active: Bool) {
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
if active {
blurEffectView.alpha = 0.5
blurEffectView.frame = self.view.frame
self.view.insertSubview(blurEffectView, at: 2)
} else {
blurEffectView.removeFromSuperview()
}
}
在另一个按钮中,使用 active: false
再次调用此函数,它应该从屏幕上删除 VisualEffectView
子视图,但它没有。你能帮我看看问题出在哪里吗?
如果您添加了一次,然后再次调用您的函数,它不会删除之前添加的视图,只是不会添加新的 UIVisualEffectView
。
您需要能够通过继续使用其 tag
属性.
func addVisualEffectView(active: Bool) {
if active {
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.alpha = 0.5
blurEffectView.frame = self.view.frame
blurEffectView.tag = 332211
self.view.insertSubview(blurEffectView, at: 2)
} else {
self.view.viewWithTag(332211)?.removeFromSuperview()
}
}