struct ColorPalette {
var DefaultBarTintColor : UIColor = UIColorFromRGB(0x75b5d4)
func UIColorFromRGB(rgbValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
}
错误:无法将“int”类型的值转换为预期的参数类型“MyClassName”
如果我这样做
view.backColor = UIColorFromRGB(UIColorFromRGB)
它有效
但我想这样做:
view.backColor = ColorPalette.DefaultBarTintColor
我不知道如何解决它
答案 0 :(得分:2)
要在struct
内调用功能,您需要使用static
关键字。以下是您的修改功能!
struct ColorPalette {
static var DefaultBarTintColor : UIColor = ColorPalette.UIColorFromRGB(0x75b5d4)
static func UIColorFromRGB(rgbValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
}
现在你可以这样打电话!
view.backColor = ColorPalette.DefaultBarTintColor
但是,如果您需要在不使用static
关键字的情况下致电,则需要制作struct
的对象。像:
let myColorPallete = ColorPalette()
然后您可以像这样访问它:
viewNoEvents.backgroundColor = myColorPallete.DefaultBarTintColor
希望这有帮助!
答案 1 :(得分:0)
不是在声明时初始化属性,而是可以使用如下初始化函数:
struct ColorPalette {
var DefaultBarTintColor : UIColor!
func UIColorFromRGB(rgbValue: Int) -> UIColor {
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
init(rgbValue: Int) {
self.DefaultBarTintColor = UIColorFromRGB(rgbValue)
}
}
然后通过传递十六进制值来创建实例,如下所示:
var color = ColorPalette(rgbValue: 0x75B5D4)