swift — UIBarButtonItem UIButton view alpha не работает

#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 при загрузке.