У меня есть UIView, на котором я хочу изменить альфа-канал с 0 на 0,5, когда пользователь открывает выдвижное меню.Когда пользователь касается затемненной области, альфа должна вернуться к 0. В настоящее время при нажатии кнопки меню значение альфа изменяется на 0,5, добавляя эффект затемнения к виду.Тем не менее, точка останова и оператор печати показывают, что при нажатии UIView строка для изменения альфа обратно на 0 выполняется, но пользовательский интерфейс все еще показывает альфа 0,5.Куда бы я ни посмотрел, код абсолютно одинаков, поэтому я не уверен, что делаю неправильно.
let dimView = UIView()
func setupMenuButton() {
let menuButton = UIBarButtonItem(title: "Menu", style: .plain, target: self, action: #selector(showMenu))
navigationItem.rightBarButtonItem = menuButton
}
@objc func showMenu() {
//TODO: present menu and dim background
if let window = UIApplication.shared.keyWindow {
let dimView = UIView()
dimView.backgroundColor = UIColor.black
dimView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(dismissDimView)))
window.addSubview(dimView)
dimView.frame = window.frame
dimView.alpha = 0
UIView.animate(withDuration: 0.5, animations: {
dimView.alpha = 0.5
})
}
}
@objc func dismissDimView() {
UIView.animate(withDuration: 0.5, animations: {
self.dimView.alpha = 0
print("dim view is not transparent")
})
}