#ios #swift #subview #uivisualeffectview
#iOS #swift #вложенный просмотр #uivisualeffectview
Вопрос:
Я определил 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
вложенный просмотр с экрана, но этого не происходит. Не могли бы вы мне помочь и сказать, в чем проблема?
Ответ №1:
Если вы добавили его один раз, а затем снова вызываете свою функцию, она не удалит ранее добавленный вид, она просто не добавит новый 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()
}
}