Перезагрузите UIButton для изменения пользовательского значка - PullRequest
0 голосов
/ 18 июня 2020

Я создал один пользовательский UIButton со значком, и я установил, что когда номер значка равен 0, красный кружок должен исчезнуть.

 open class ButtonWithBadge: UIButton {

   open func addBadgeIcon(badgeNumber: Int, color: UIColor) {
      let sizeThatFits = self.sizeThatFits(CGSize(width: bounds.width, height: CGFloat.greatestFiniteMagnitude))
      let badgeCount = UILabel(frame: CGRect(x: sizeThatFits.width - 15, y: -07, width: 18, height: 18))
      badgeCount.layer.borderColor = UIColor.clear.cgColor
      badgeCount.layer.borderWidth = 2
      badgeCount.layer.cornerRadius = badgeCount.bounds.size.height / 2
      badgeCount.textAlignment = .center
      badgeCount.layer.masksToBounds = true
      badgeCount.textColor = .white
      badgeCount.font = badgeCount.font.withSize(9)
      badgeCount.backgroundColor = badgeNumber == 0 ? .clear : color
      badgeCount.text = badgeNumber == 0 ? "" : "\(badgeNumber)"
      addSubview(badgeCount)
   }

Я вызываю эту функцию, чтобы изменить номер значка. Эта функция отлично работает, когда число уменьшается, но когда я передаю ей 0, она не может сделать clear фонового значка и заменить его текст на " ". Он работает только тогда, когда вы снова открываете страницу, а затем, когда номер значка равен 0, он не добавляет это представление количества значков. Я должен как-то перезагрузить кнопку, когда ее номер равен 0, чтобы удалить этот значок. может ли кто-нибудь помочь мне в этом. Спасибо

1 Ответ

0 голосов
/ 18 июня 2020

Попробуйте следующий код:

open class ButtonWithBadge: UIButton {

  open func addBadgeIcon(badgeNumber: Int, color: UIColor) {
  let sizeThatFits = self.sizeThatFits(CGSize(width: bounds.width, height: CGFloat.greatestFiniteMagnitude))
  let badgeCount = UILabel(frame: CGRect(x: sizeThatFits.width - 15, y: -07, width: 18, height: 18))
  badgeCount.layer.borderColor = UIColor.clear.cgColor
  badgeCount.layer.borderWidth = 2
  badgeCount.layer.cornerRadius = badgeCount.bounds.size.height / 2
  badgeCount.textAlignment = .center
  badgeCount.layer.masksToBounds = true
  badgeCount.textColor = .white
  badgeCount.font = badgeCount.font.withSize(9)
  badgeCount.backgroundColor = badgeNumber == 0 ? .clear : color
  badgeCount.text = badgeNumber == 0 ? "" : "\(badgeNumber)"
  if(badgeNumber != 0){
  addSubview(badgeCount)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...