2016-05-01 5 views
6

私は、赤、緑、青、アルファの値を選択するためにスライダを使用して色を作成して、アプリケーションのボタンの色を変更しようとしていました。そこで私は、ユーザーが作成した色を保持する変数を作成しました。UIColorにCGColorが定義されていないため、最初に色空間を変換する必要があります。 Swift 2、Xcode 7

ボタンはどこにありますか。 ChangeColorsはRGBスライダシステムです。

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. 
} 
} 

第2は、RGB RGBスライダシステムのコードです。

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 

} 

} 

しかし、すぐにアプリがクラッシュしたとしてもオープンし、次のエラーが表示されます。キャッチされない例外により「NSInvalidArgumentException」、理由にアプリを終了

:「*** -CGColor UIColorのために定義されていません。色空間を最初に変換する必要があります。

私は本当に助けが必要です。ありがとうございました。

+0

変更ANYOBJECTからメソッドのパラメータの型UISlider –

+0

にあなたがbuttonColorある財産のどのような種類の0から1 –

+0

の範囲の値を渡していることを確認してください? –

答えて

5

問題は、UIColor()イニシャライザによって作成されたインスタンスが実際の色を表していないことです。クラッシュメッセージをより詳細に見ると、実際にはUIPlaceholderColorインスタンスが作成されていることがわかります。名前が示すように、色情報がない場合は「プレースホルダ」として動作するようです。したがって、あなたの意見のbackgroundColorにそれを割り当てることはできません。

この修正では、buttonColorのデフォルトの色が定義されています。あなたの場合はclearColorとお伝えします。

var buttonColor = UIColor.clearColor() 
関連する問題