#swift #uibarbuttonitem
#swift #uibarbuttonitem
Вопрос:
Я создаю uibutton в расширении со следующим кодом:
extension UIButton {
func customButton(_ title: String, selector: Selector) -> UIButton{
let button = UIButton()
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.black.cgColor
button.titleLabel!.font = UIFont.systemFont(ofSize: 16)
button.setTitle(title, for: UIControlState())
button.setTitleColor(UIColor.black, for: UIControlState())
button.setTitleColor(UIColor(r: 220, g: 220, b:220), for: .highlighted)
button.titleEdgeInsets = UIEdgeInsetsMake(8, 8, 8, 8)
button.layer.cornerRadius = 5
button.sizeToFit()
button.addTarget(self, action: selector, for: .touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 80, height: 30)
button.alpha = 0.4
return button
}
}
Проблема в том, что я использую эту кнопку в качестве пользовательского представления в UIBarButtonItem:
UIBarButtonItem(customView: self.customButton!)
Эта кнопка устанавливает альфа-значение 0.4, но кнопка по-прежнему отображается с полной альфа-версией!
Я даже пытался переключить его в классе после вызова метода CustomButton, и он просто не работает.
Я пытаюсь сделать так, чтобы кнопка казалась отключенной при первом открытии, и заставить эту альфа-версию работать невозможно.
Ответ №1:
Не уверен, почему это происходит, но я добавил это, и теперь все в порядке.
override func viewWillAppear(_ animated: Bool) {
button?.alpha = 0.4
}
По какой-то причине, если поместить его в viewWillAppear, альфа-значение будет равно 0,4 при загрузке.