swift 如何将 UIColor 类型的值转换为 Uint
How to convert value of type UIColor to Uint in swift
我得到了这个 UIColor:
UIColor(red: 0.2, green: 0.4118, blue: 0.1176, alpha: 1.0)
而且我需要在 Uint 中进行转换。我怎样才能做到这一点?
编辑:
func showEmailMessage(advice : String)
{
_ = SCLAlertView().showSuccess("Congratulation", subTitle: advice, closeButtonTitle: "Ok", duration : 10, colorStyle: 0x33691e, colorTextButton: 0xFFFFFF)
}
颜色样式字段要 Uint
您可以使用 UIColor.getRed(...)
方法将颜色提取为 CGFloat
,然后将 CGFloat
三元组的值转换为 [=14] 的适当位位置=]变量。
// Example: use color triplet CC6699 "=" {204, 102, 153} (RGB triplet)
let color = UIColor(red: 204.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1.0)
// read colors to CGFloats and convert and position to proper bit positions in UInt32
var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
if color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) {
var colorAsUInt : UInt32 = 0
colorAsUInt += UInt32(red * 255.0) << 16 +
UInt32(green * 255.0) << 8 +
UInt32(blue * 255.0)
colorAsUInt == 0xCC6699 // true
}
有关详细信息,请参见例如Language Guide - Advanced Operators 其中包含一个专门用于移位 w.r.t RGB 三元组的示例,以及其他有价值的内容。
我得到了这个 UIColor:
UIColor(red: 0.2, green: 0.4118, blue: 0.1176, alpha: 1.0)
而且我需要在 Uint 中进行转换。我怎样才能做到这一点?
编辑:
func showEmailMessage(advice : String)
{
_ = SCLAlertView().showSuccess("Congratulation", subTitle: advice, closeButtonTitle: "Ok", duration : 10, colorStyle: 0x33691e, colorTextButton: 0xFFFFFF)
}
颜色样式字段要 Uint
您可以使用 UIColor.getRed(...)
方法将颜色提取为 CGFloat
,然后将 CGFloat
三元组的值转换为 [=14] 的适当位位置=]变量。
// Example: use color triplet CC6699 "=" {204, 102, 153} (RGB triplet)
let color = UIColor(red: 204.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1.0)
// read colors to CGFloats and convert and position to proper bit positions in UInt32
var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
if color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) {
var colorAsUInt : UInt32 = 0
colorAsUInt += UInt32(red * 255.0) << 16 +
UInt32(green * 255.0) << 8 +
UInt32(blue * 255.0)
colorAsUInt == 0xCC6699 // true
}
有关详细信息,请参见例如Language Guide - Advanced Operators 其中包含一个专门用于移位 w.r.t RGB 三元组的示例,以及其他有价值的内容。