CGColor 未定义为 UIColor,需要先转换颜色空间。 Swift 2 个,Xcode 7 个
CGColor not defined for the UIColor, need to first convert colorspace. Swift 2, Xcode 7
我试图通过使用滑块创建颜色来更改我的应用程序按钮的颜色 select 红色、绿色、蓝色和 Alpha 的值。所以我创建了一个变量来保存用户创建的颜色。
ViewController 是按钮所在的位置。
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.
}
}
第二个是te 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
}
}
但是应用程序一打开就崩溃并出现以下错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'*** -CGColor 没有为 UIColor 定义;需要先转换颜色空间。
我真的需要帮助。谢谢。
问题是 UIColor()
初始化程序创建的实例不代表实际颜色。如果您更详细地查看崩溃消息,您会发现它实际上创建了一个 UIPlaceholderColor
实例——它(顾名思义)在没有任何颜色的情况下似乎充当 'placeholder'信息。因此,您不能将其分配给任何视图的 backgroundColor
。
修复是为您的 buttonColor
定义默认颜色。在你的情况下,我建议 clearColor
.
var buttonColor = UIColor.clearColor()
我试图通过使用滑块创建颜色来更改我的应用程序按钮的颜色 select 红色、绿色、蓝色和 Alpha 的值。所以我创建了一个变量来保存用户创建的颜色。
ViewController 是按钮所在的位置。 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.
}
}
第二个是te 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
}
}
但是应用程序一打开就崩溃并出现以下错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'*** -CGColor 没有为 UIColor 定义;需要先转换颜色空间。
我真的需要帮助。谢谢。
问题是 UIColor()
初始化程序创建的实例不代表实际颜色。如果您更详细地查看崩溃消息,您会发现它实际上创建了一个 UIPlaceholderColor
实例——它(顾名思义)在没有任何颜色的情况下似乎充当 'placeholder'信息。因此,您不能将其分配给任何视图的 backgroundColor
。
修复是为您的 buttonColor
定义默认颜色。在你的情况下,我建议 clearColor
.
var buttonColor = UIColor.clearColor()