UIColor类不允许我实例化UIColor。与...有关? !符号

时间:2014-08-15 06:09:12

标签: objective-c swift ios8 uicolor

我正在尝试使用以下代码创建一个UIColor实例:

var someColor:UIColor = UIColor.colorWithAlphaComponent(0.3)

预编译器告诉我有错误。它说UIColor!不能转换为UIColor。

这是斯威夫特最难解开的谜团之一。

UIColor是什么!意思?更详细的,我不明白为什么感叹!标志就在那里。

我有点熟悉?我的理解是它是可选的。如果它存在,它保持其'值,如果不是,则设置为NIL。

非常感谢任何建议和更正。

感谢您解决我的问题。

干杯!

3 个答案:

答案 0 :(得分:3)

您使用的方法是UIColour的实例方法,而不是类方法。你的意思是:

UIColor(white:1.0, alpha:0.3)

您应该使用现有颜色调用您正在使用的方法。它不是初始化者。我同意,错误信息并不是非常有用。我想这个:

  

它说UIColor!不能转换为UIColor。

Swift是否尝试将类转换为实例。

答案 1 :(得分:0)

colorWithAlphaComponent:不是类方法。您必须使用UIColor的实例调用它,就像这样:

var myColor = UIColor.grayColor() //grey color, for example
var someColor: UIColor = myColor.colorWithAlphaComponent(0.3)

例如,在Playground中,您可以设置/更改UIButton实例的背景颜色,如下所示:

import UIKit

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 20))

var myColor = UIColor.grayColor() //grey color, for example
var someColor: UIColor = myColor.colorWithAlphaComponent(0.3)

button.backgroundColor = someColor //click on the quick view (eye) button to see the new background color of button

答案 2 :(得分:0)

查看UIColor的文档colorWithAlphaComponent它是实例方法。所以你需要在UIColor实例上调用它。