воскресенье, 18 августа 2013 г.

Categories. UIColor from Hex and from RGB

Цвет может задаваться через шестнадцатиричную запись или через RGB. Для того, чтобы создать нужный нам цвет, зная только его шестнадцатиричное значение, необходимо создать так называемую категорию. Категория позволяет добавить к существующим классам новые методы. То есть мы добавим к классу UIColor методы которые позволят создавать цвет, используя шестнадцатиричную запись или RGB значение цвета.

UIColor+Hex.h

#import <UIKit/UIKit.h>
 
@interface UIColor (Hex)
 
+ (UIColor *) colorWithHexString:(NSString *)aHexString;
 
+ (UIColor *) colorWithRGBHex:(UInt32)aHex;
 
@end


UIColor+Hex.m

#import "UIColor+Hex.h"
 
@implementation UIColor (Hex)
 
+ (UIColor *) colorWithHexString:(NSString *)aHexString
{
    NSScanner *scanner = [NSScanner scannerWithString:aHexString];
    unsigned hexNum;
 
    if (![scanner scanHexInt:&hexNum])
    {
        return nil;
    }
 
    return [UIColor colorWithRGBHex:hexNum];
}
 
+ (UIColor *) colorWithRGBHex:(UInt32)aHex
{
    int r = (aHex >> 16) & 0xFF;
    int g = (aHex >> 8) & 0xFF;
    int b = (aHex) & 0xFF;
 
    return [UIColor colorWithRed:r / 255.0f
                           green:g / 255.0f
                            blue:b / 255.0f
                           alpha:1.0f];
}
 
@end

Использование метода категории UIColor+Hex

UIColor *color = [UIColor colorWithHexString:@"c90606"];

Комментариев нет:

Отправить комментарий