In UIView and its subclasses, there are many properties — such as frame and alpha — that can be animated when they change. i.e. you can do something this and changes will be animated:
UIView.animate(withDuration: 2) {
self.label.frame = CGRect(x: 150, y: 200, width: 50, height: 20)
self.button.tintColor = .white
}
Unfortunately, this doesn't work for UILabel's color property. Here's the good news: You can approximate this using transition(with:duration:options:animations:completion:) instead:
UIView.transition(with: label, duration: 2, options: .transitionCrossDissolve, animations: {
self.label.textColor = .red
}, completion: nil)
.