2016-04-01 1 views
1

J'ai un dégradé simple: 2 couleurs, 1 emplacement. Mais il est en crachant du code qui ne peut pas travailler sur UIColors:'blendedColorWithFraction: ofColor:' dans iOS Swift et ObjC

let gradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [gradientColor2.CGColor, gradientColor2.blendedColorWithFraction(0.5, ofColor: gradientColor).CGColor, gradientColor.CGColor], [0.14, 0.5, 1])! 

Répondre

2

est ici la mise en œuvre de la méthode si vous ne souhaitez pas utiliser 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); 
    } 
} 
2

Essayez l'exportation classe StyleKit, non seulement l'extrait de méthode de toile. StyleKit inclut l'extension de UIColor qui implémente cette méthode.