Установите анимированный цвет подсветки UITableViewCell в Swift - PullRequest
0 голосов
/ 21 октября 2018

По умолчанию эффект подсветки UITableViewCell выглядит следующим образом:

Default highlight effect

Я ищу аналогичный эффект, а не серыйэто пользовательский цвет (например, значение UIColor по умолчанию для красного цвета).Я пытался реализовать это сам, используя делегат setHighlighted, но он не производит анимационный эффект, который делает стиль по умолчанию.

Это код, который я использовал, и нежелательный эффект, который достигается:

override func setHighlighted(_ highlighted: Bool, animated: Bool) {
  super.setHighlighted(highlighted, animated: animated)

  if highlighted {
    self.backgroundColor = .red
  }
}

Рядом с настройкой cell.selectionStyle = .none в cellForRowAt.

Undesired highlight effect

Есть ли способ создания анимированных анимацийпользовательский цвет подсветки?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

(отредактировано) Вы можете использовать жесты для имитации поведения натива, что-то вроде этого:

  let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
yourCell.view.addGestureRecognizer(longPressRecognizer)

  func longPressed(sender: UILongPressGestureRecognizer)
   {
        if sender.state == .began {
            yourCell.animate(withDuration: 0.2, delay:0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEeaseOut, animations: { yourCell.backgroundColor = .red })

        }
        if sender.state == .ended {
            yourCell.animate(withDuration: 0.2, delay:0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEeaseOut, animations: { yourCell.backgroundColor = .white })
        }
   }
0 голосов
/ 21 октября 2018

Вам нужно добавить еще одно условие «else» для вашего условия «if» и очистить красный фоновый цвет до нормального.

  if highlighted {
    self.backgroundColor = .red
  }else { 
    self.backgroundColor = .white
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...