Can I combine two UIColor together?

I have colorA, which is [UIColor blueColor] , and colorB, which is [UIColor redColor] . Is it possible for me to make [UIColor purple] ? How can this be implemented? Thanks.

+7
source share
4 answers

You cannot mix two UIColors directly, as you indicate in your question. In any case, there is an example of mixing two colors using other schemes. The link to the same is as follows:

Link here

+2
source

Inelegant, but it works:

 UIColor* blend( UIColor* c1, UIColor* c2, float alpha ) { alpha = MIN( 1.f, MAX( 0.f, alpha ) ); float beta = 1.f - alpha; CGFloat r1, g1, b1, a1, r2, g2, b2, a2; [c1 getRed:&r1 green:&g1 blue:&b1 alpha:&a1]; [c2 getRed:&r2 green:&g2 blue:&b2 alpha:&a2]; CGFloat r = r1 * beta + r2 * alpha; CGFloat g = g1 * beta + g2 * alpha; CGFloat b = b1 * beta + b2 * alpha; return [UIColor colorWithRed:r green:g blue:b alpha:1.f]; } 

More elegant:

UIColor + Extensions.h:

 @interface UIColor (Extensions) - (UIColor*)blendWithColor:(UIColor*)color2 alpha:(CGFloat)alpha2; @end 

UIColor + Extensions.m:

 @implementation UIColor (Extensions) - (UIColor*)blendWithColor:(UIColor*)color2 alpha:(CGFloat)alpha2 { alpha2 = MIN( 1.0, MAX( 0.0, alpha2 ) ); CGFloat beta = 1.0 - alpha2; CGFloat r1, g1, b1, a1, r2, g2, b2, a2; [self getRed:&r1 green:&g1 blue:&b1 alpha:&a1]; [color2 getRed:&r2 green:&g2 blue:&b2 alpha:&a2]; CGFloat red = r1 * beta + r2 * alpha2; CGFloat green = g1 * beta + g2 * alpha2; CGFloat blue = b1 * beta + b2 * alpha2; CGFloat alpha = a1 * beta + a2 * alpha2; return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } @end 

Swift 3/4:

 extension UIColor { func mixin(infusion:UIColor, alpha:CGFloat) -> UIColor { let alpha2 = min(1.0, max(0, alpha)) let beta = 1.0 - alpha2 var r1:CGFloat = 0, r2:CGFloat = 0 var g1:CGFloat = 0, g2:CGFloat = 0 var b1:CGFloat = 0, b2:CGFloat = 0 var a1:CGFloat = 0, a2:CGFloat = 0 if getRed(&r1, green: &g1, blue: &b1, alpha: &a1) && infusion.getRed(&r2, green: &g2, blue: &b2, alpha: &a2) { let red = r1 * beta + r2 * alpha2; let green = g1 * beta + g2 * alpha2; let blue = b1 * beta + b2 * alpha2; let alpha = a1 * beta + a2 * alpha2; return UIColor(red: red, green: green, blue: blue, alpha: alpha) } // epique de las failuree return self } } 
+27
source

Set each input color for your RGBA components with -[UIColor getRed:green:blue:alpha:] . Select components from each and create a new color using +[UIColor colorWithRed:green:blue:alpha:] .

+4
source

If you want to use purple, then this will not be a big deal. All UIColor is rgb color. You can simply pass the RGB value for each color and get the desired color. Use this link to convert the hexadecimal value of any color to convert to UIColor. http://www.touch-code-magazine.com/web-color-to-uicolor-convertor/

for example #color code for green: # 008400: [UIColor colorWithRed: 0 green: 0.518 blue: 0 alpha: 1] / # 008400 /

-one
source

All Articles