Как я могу дважды изменить метку UITableView textColor в анимации? - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь выделить текст в табличном представлении, чтобы указать, что он был скопирован.Сначала я изменяю его на другой цвет, затем обратно на черный в коде анимации.Но когда я запускаю его, он застревает после первого изменения.У меня есть UIColor.green для тестирования.После запуска этого кода цвет остается зеленым.

Кто-нибудь может увидеть, что с этим не так?

let allCells: ((UITableViewCell) -> Void) -> Void = { handler in
    if let paths = self.savedTempTable.indexPathsForVisibleRows {
        paths.compactMap { self.savedTempTable.cellForRow(at: $0) }.forEach { cell in
            handler(cell)
        }
        self.savedTempTable.reloadRows(at: paths, with: .none)
    }
}

UIView.animate(withDuration: 0.5,
               animations: { allCells { cell in cell.textLabel?.textColor = .green } },
               completion: { _ in
                UIView.animate(withDuration: 0.5, animations: { allCells { cell in cell.textLabel?.textColor = .black } } )
}
)

1 Ответ

0 голосов
/ 16 мая 2018

Для анимации textColor необходимо использовать переход (с: длительность: опции: анимации: завершение:) вместо.

for cell in tableView.visibleCells {
  UIView.transition(with: cell, duration: 0.5, options: .transitionCrossDissolve, animations: {
    cell.textLabel?.textColor = .green
  }) { (_) in
    UIView.transition(with: cell, duration: 0.5, options: .transitionCrossDissolve, animations: {
      cell.textLabel?.textColor = .black
    }, completion: nil)
  }
}

Результат

enter link description here

Для более подробной информации, вы можете проверить мой образец

https://github.com/trungducc/stackoverflow/tree/animate-label-text-color

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...