Я реализую эффект размытия на виде (с Swift 4.1, Xcode 9.3) с помощью следующего кода:
myXib - загружает представление пера и добавляет подпредставление размытия
func setup() {
// load xib view
Bundle.main.loadNibNamed("myXib", owner: self, options: nil)
self.view.frame = bounds
self.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.addSubview(self.view)
// create blur effect
let blurEffect = UIBlurEffect(style: .light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = blurView.bounds
blurView.translatesAutoresizingMaskIntoConstraints = false
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
blurView.insertSubview(blurEffectView, at: 0)
isBlurShowing = true
}
Я использую простую кнопку переключения, которая вызывает функции show () или hide ().
func hide() {
blurView.isHidden = true
blurView.alpha = 0
isBlurShowing = false
}
func show() {
blurView.isHidden = false
blurView.alpha = 1
isBlurShowing = true
}
Пример myXib выглядит следующим образом:
где серая область - это blurView (обычно для Clear Color обычно устанавливается только серый здесь для наглядности.)
Для вида (оранжевый) под blurView, но внутри функция Xib скрыть () работает правильно, но для вида (синий) под вид Xib эффект размытия остается .
С размытием (.isHidden = false, .alpha = 1)
без размытия ((.isHidden = true, .alpha = 0)
Эффект размытия меньше при выключении, но он все еще присутствует.
Что я делаю не так?
Заранее спасибо.