我有一个简单的渐变:2种颜色,1个位置。但它正在吐出无法在UIColors上运行的代码:
let gradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [gradientColor2.CGColor, gradientColor2.blendedColorWithFraction(0.5, ofColor: gradientColor).CGColor, gradientColor.CGColor], [0.14, 0.5, 1])!
答案 0 :(得分:4)
如果您不想使用StyleKit,那么这是方法实现:
extension UIColor {
func blendedColorWithFraction(fraction: CGFloat, ofColor color: UIColor) -> UIColor {
var r1: CGFloat = 1.0, g1: CGFloat = 1.0, b1: CGFloat = 1.0, a1: CGFloat = 1.0
var r2: CGFloat = 1.0, g2: CGFloat = 1.0, b2: CGFloat = 1.0, a2: CGFloat = 1.0
self.getRed(&r1, green: &g1, blue: &b1, alpha: &a1)
color.getRed(&r2, green: &g2, blue: &b2, alpha: &a2)
return UIColor(red: r1 * (1 - fraction) + r2 * fraction,
green: g1 * (1 - fraction) + g2 * fraction,
blue: b1 * (1 - fraction) + b2 * fraction,
alpha: a1 * (1 - fraction) + a2 * fraction);
}
}
答案 1 :(得分:2)
尝试导出StyleKit类,而不仅仅是canvas方法片段。 StyleKit包含UIColor
的扩展,它实现了这种方法。