Я обеспечить Swift ответа, который может быть использован без какой-либо настройки, если вы хотите подсвеченный цвета, чтобы быть затемнена версией оригинального цвета фона. Если вы, с другой стороны, хотите совершенно другой выделенный цвет фона, вы можете предоставить это свойство highlightBackgroundColor как UIColor.
Ниже приведен самый эффективный и простой способ реализовать такую функциональность в Swift. Он также является общим, что означает, что он может использоваться для множества разных кнопок с разными цветами.
Вот код:
import UIKit
class HighlightedColorButton: UIButton {
// A new highlightedBackgroundColor, which shows on tap
var highlightedBackgroundColor: UIColor?
// A temporary background color property, which stores the original color while the button is highlighted
var temporaryBackgroundColor: UIColor?
// Darken a color
func darkenColor(color: UIColor) -> UIColor {
var red = CGFloat(), green = CGFloat(), blue = CGFloat(), alpha = CGFloat()
color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
red = max(red - 0.5, 0.0)
green = max(green - 0.5, 0.0)
blue = max(blue - 0.5, 0.0)
return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
// Set up a property observer for the highlighted property, so the color can be changed
@objc override var highlighted: Bool {
didSet {
if highlighted {
if temporaryBackgroundColor == nil {
if backgroundColor != nil {
if let highlightedColor = highlightedBackgroundColor {
temporaryBackgroundColor = backgroundColor
backgroundColor = highlightedColor
} else {
temporaryBackgroundColor = backgroundColor
backgroundColor = darkenColor(temporaryBackgroundColor!)
}
}
}
} else {
if let temporaryColor = temporaryBackgroundColor {
backgroundColor = temporaryColor
temporaryBackgroundColor = nil
}
}
}
}
}
Лечить кнопку как обычный UIButton, с добавлением дополнительного highlightedBackgroundColor собственности:
let highlightedColorButton = HighlightedColorButton.buttonWithType(.Custom) as HighlightedColorButton
highlightedColorButton.backgroundColor = UIColor.redColor()
highlightedColorButton.highlightedBackgroundColor = UIColor.blueColor()
Вы хотите изменить цвет фона или цвет текста? – Greg
Заменить цвет фона при подсвечивании ... –