Удалить VisualEffectView из подпредставления - PullRequest
0 голосов
/ 04 марта 2019

Я определил 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 Ответ

0 голосов
/ 04 марта 2019

Если вы добавили его один раз, а затем снова вызвали свою функцию, он не удалит ранее добавленное представление, он просто не добавит новый 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()
    }
}
...