Cocoa-Matic

iPhone, iPod touch, iPad tutorials, examples and sample code. Come and get it!

Friday, July 30, 2010

UIColor macro with hex values

Cocoa has several colors built into the UIColor class. For example:
[UIColor redColor];
[UIColor darkGrayColor];

This is great, but what if you want one of the thousands of colors not found in the pre-defined list? There's an easy way to do that:
[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];

Perfect. But what if you just have a list of hex color codes? Wouldn't it be nice if you didn't have to convert each of the color components in the hex code to its corresponding RGB decimal value? Here's where a simple and very useful macro comes into play. Just place the code below in a header file and you're done. (They're identical except that UIColorFromRGB always sets the alpha value to 1.0, whereas UIColorFromRGBWithAlpha allows you to set the alpha value.)

//RGB color macro
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

//RGB color macro with alpha
#define UIColorFromRGBWithAlpha(rgbValue,a) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:a]

Here's how to call the macros:
self.view.backgroundColor = UIColorFromRGB(0xCECECE);
self.view.backgroundColor = UIColorFromRGBWithAlpha(0xCECECE, 0.8);

This is a good one to keep in your toolbox. Hope it's as useful for you as it is for me.

Labels: , , ,

4 Comments:

  • Absolutely brilliant!
    Thanks a lot!
    Nacho

    By Blogger Ignacio Pascual, At November 27, 2010 at 6:40 AM  

  • Your macros for UIColor from hex rgb values might be handy as a category on UIColor that could be used as follows:

    UIColor* color = [UIColor colorFromHexRGB:0xFF00FF];

    and

    UIColor* colorWithAlpha = [UIColor colorFromHexRGBA:0xFF00FF88];

    By Blogger Theo, At July 30, 2011 at 5:46 PM  

  • Thank you for this!!! Exactly what I've been looking for!

    By Blogger scotts7777, At April 4, 2012 at 4:13 PM  

  • For those who want to do it as a category of UIColor

    @implementation UIColor (Hex)

    //RGB color with alpha
    + (UIColor *)colorWithHex:(int)hexValue alpha:(CGFloat)alpha
    {
    return [UIColor
    colorWithRed:((float)((hexValue & 0xFF0000) >> 16))/255.0
    green:((float)((hexValue & 0xFF00) >> 8))/255.0
    blue:((float)(hexValue & 0xFF))/255.0 alpha:alpha];
    }


    //RGB color
    + (UIColor *)colorWithHex:(int)hexValue
    {
    return [UIColor colorWithHex:hexValue alpha:1.0];
    }

    @end

    By Blogger allbto, At June 14, 2013 at 5:38 AM  

Post a Comment

Subscribe to Post Comments [Atom]



<< Home


« Older Entries  
Newer Entries »