Est-ce que quelqu'un sait comment changer la couleur de fond d'un UIButton personnalisé?Changer la couleur de fond de la coutume UIButton (CoreGraphics) lorsque le bouton est pressé
Comme vous pouvez le voir dans l'image que le bouton nommé parcelle a une couleur d'arrière-plan orange. Mais le bouton à gauche (le triangle noir) n'est pas en orange. Ce que je veux, c'est quand j'appuie sur le bouton "plot" ou "award", le triangle qui se trouve à côté change aussi avec.
Voici mon code:
@IBDesignable class LeadingButton: UIButton {
override func drawRect(rect: CGRect) {
// *Draw triangle button:
// Create context for triangle
let context = UIGraphicsGetCurrentContext()
// *Put information into context:
// Info for drawing triangle:
CGContextMoveToPoint(context, 17, 0)
CGContextAddLineToPoint(context, 0, 40)
CGContextAddLineToPoint(context, 17, 40)
CGContextAddLineToPoint(context, 17, 0)
// Info color triangle
CGContextSetFillColorWithColor(context, UIColor.blackColor().CGColor)
// Color in triangle with specified color
CGContextFillPath(context)
// Draw triangle
CGContextStrokePath(context)
}
}
class MovieDetailController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// For changing background color of buttons
self.buttonArray = [plotB, directorB, writerB, actorsB, countryB, awardB, posterB, leadingB, trailingB]
}
func isButton(pressed: Int) {
switch pressed {
case 0...8:
let selectedButton = buttonArray[pressed]
selectedButton.backgroundColor = UIColor.orangeColor()
var idDictionary = [0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6]
idDictionary.removeValueForKey(pressed)
for (_, value) in idDictionary {
if value == 6 {
}
else {
let remainButtons = buttonArray[value]
remainButtons.backgroundColor = UIColor.blackColor()
}
}
default:
print("test")
}
}
Je l'ai essayé, mais ça n'a pas marché. Je reçois également un avertissement dans ma console de débogage:: CGContextDrawPath: contexte non valide 0x0. Si vous souhaitez voir la trace, veuillez définir la variable d'environnement CG_CONTEXT_SHOW_BACKTRACE. Est-ce parce que vous ne pouvez pas appeler drawRect quand vous voulez? Je l'ai lu quelque part. –
Kelvin