Я бы использовал UIButton.isSelected
вместо состояния подсветки imageView. Я не уверен насчет UIImageView
, но isHighlighted
для кнопок только при их активном прикосновении, а не в постоянном состоянии. Смотрите строки, помеченные **:
let favoriteButton: UIButton = {
let button = UIButton(type: .custom)
var emptyHeartImg = UIImage(named: "emptyheart")
var fullHeartImg = UIImage(named: "fullheart")
emptyHeartImg = emptyHeartImg?.maskWithColor(color: UIColor(r: 128, g: 171, b: 103))
fullHeartImg = fullHeartImg?.maskWithColor(color: UIColor(r: 128, g: 171, b: 103))
**button.setImage(emptyHeartImg, for: .normal)
**button.setImage(fullHeartImg, for: .selected)
**button.imageView?.contentMode = .scaleAspectFill
button.addTarget(self, action: #selector(handleFavorite), for: .touchUpInside)
return button
}()
А потом в вашем обработчике:
favoriteButton.isSelected = !favoriteButton.isSelected