【问题标题】:CGColor not defined for the UIColor, need to first convert colorspace. Swift 2, Xcode 7CGColor 没有为 UIColor 定义,需要先转换颜色空间。斯威夫特 2,Xcode 7
【发布时间】:2016-08-26 01:56:20
【问题描述】:

我试图通过使用滑块选择红色、绿色、蓝色和 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 定义;需要先转换色彩空间。

我真的需要帮助。谢谢。

【问题讨论】:

  • 将方法参数类型从AnyObject改为UISlider
  • 确保您传递的值范围是 0 到 1
  • buttonColor是什么类型的属性?
  • @user3654258 是一个全局变量类型 UIColor
  • 尝试将所有 UIColor 更改为 CGColor 的?

标签: xcode swift uicolor color-space cgcolor


【解决方案1】:

问题是UIColor() 初始化器创建的实例并不代表实际的颜色。如果您更详细地查看崩溃消息,您会发现它实际上创建了一个UIPlaceholderColor 实例——它(顾名思义)在没有任何颜色信息的情况下似乎充当“占位符”。因此,您不能将其分配给您的任何视图的backgroundColor

解决方法是为您的buttonColor 定义默认颜色。在你的情况下,我建议clearColor

var buttonColor = UIColor.clearColor()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2018-08-07
    • 2017-08-11
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多