Изменение фона при нажатии легко, если вы используете фоновое изображение для кнопки, а не простой цвет фона. Вы можете использовать расширение на UIColour, чтобы легко создать цветное фоновое изображение для кнопки.
extension UIColor {
func image(_ size: CGSize = CGSize(width: 1, height: 1)) -> UIImage {
return UIGraphicsImageRenderer(size: size).image { rendererContext in
self.setFill()
rendererContext.fill(CGRect(origin: .zero, size: size))
}
}
}
, а затем просто создать изображение для нормального и выбранного состояния, назначить кнопкам два состояния, и оно будетизменить при нажатии
let normalImage = UIColor.blue.image()
let selectedImage = UIColor.purple.image()
button.setBackgroundImage(normalImage, for: .normal)
button.setBackgroundImage(selectedImage, for: .highlighted)
Если это то, что вы хотите делать регулярно, вы даже можете расширить UIButton, чтобы сделать его еще проще
extension UIButton {
func setBackroundColor(_ color: UIColor, for state: UIControl.State) {
self.setBackgroundImage(color.image(), for: state)
}
}
и использовать его как
button.setBackroundColor(.darkGray, for: .normal)