2016-05-01 18 views
6

Ich habe versucht, die Farbe der Tasten meiner App zu ändern, indem ich die Farbe mithilfe der Schieberegler auswähle, um die Werte Rot, Grün, Blau und Alpha auszuwählen. Also habe ich eine Variable erstellt, die die vom Benutzer erstellte Farbe enthielt.CGColor nicht für den UIColor definiert, müssen zunächst Farbraum konvertieren. Swift 2, Xcode 7

In ViewController befinden sich die Schaltflächen. ChangeColors ist das RGB Sliders System.

import UIKit 

import Foundation 

var buttonColor = UIColor() 

class ViewController: UIViewController { 

@IBOutlet var tools: UIButton! 

@IBOutlet var custom: UIButton! 

@IBOutlet var support: UIButton! 

@IBOutlet var donate: UIButton! 



override func viewDidLoad() { 
    super.viewDidLoad() 

    tools.backgroundColor = buttonColor 
    custom.backgroundColor = buttonColor 
    support.backgroundColor = buttonColor 
    donate.backgroundColor = buttonColor 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
} 

Die zweite ist der Code des RGB Slider System.

import Foundation 

import UIKit 

class ChangeColors: UIViewController { 

@IBOutlet var Red: UISlider! 

@IBOutlet var Green: UISlider! 

@IBOutlet var Blue: UISlider! 

@IBOutlet var Alpha: UISlider! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func preview(sender: AnyObject) { 

    let rVal = CGFloat(Red.value) 
    let gVal = CGFloat(Green.value) 
    let bVal = CGFloat(Blue.value) 
    let aVal = CGFloat(Alpha.value) 

    self.view.backgroundColor = UIColor(red: rVal, green: gVal, blue: bVal, alpha: aVal) 
} 

@IBAction func change(sender: AnyObject) { 

    let rVal = CGFloat(Red.value) 
    let gVal = CGFloat(Green.value) 
    let bVal = CGFloat(Blue.value) 
    let aVal = CGFloat(Alpha.value) 
    let color = UIColor(red: rVal, green: gVal, blue: bVal, alpha: aVal) 

    buttonColor = color 

} 

} 

Aber die App stürzt ab, sobald sie zu öffnen und erhalten den folgenden Fehler:

App beenden aufgrund nicht abgefangene Ausnahme ‚NSInvalidArgumentException‘, Grund: ‚*** -CGColor nicht für die UIColor definiert; müssen zuerst den Farbraum konvertieren.

Ich brauche wirklich Hilfe. Danke.

+0

Ändern Sie den Methodenparameter Typ von ANYOBJECT sicher UISlider –

+0

Machen Sie im Bereich von 0 bis 1 –

+0

Wert vorbei ist button? –

Antwort

5

Das Problem ist, dass eine Instanz, die vom UIColor() Initialisierer erstellt wird, keine tatsächliche Farbe darstellt. Wenn Sie sich die Absturzmeldung genauer ansehen, werden Sie sehen, dass sie tatsächlich eine UIPlaceholderColor Instanz erstellt, die (wie der Name schon sagt) als "Platzhalter" in Abwesenheit von Farbinformationen zu fungieren scheint. Sie können es daher nicht der backgroundColor Ihrer Ansichten zuordnen.

Das Update ist eine Standardfarbe für Ihre buttonColor definieren. In Ihrem Fall würde ich empfehlen clearColor. Welche Art von Immobilie

var buttonColor = UIColor.clearColor()