iOS 随机颜色和十六进制颜色转换

一、随机颜色

- (UIColor *)arndomColor

{

CGFloat red = arc4random_uniform(256)/ 255.0;

CGFloat green = arc4random_uniform(256)/ 255.0;

CGFloat blue = arc4random_uniform(256)/ 255.0;

UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

return color;

}

随机颜色的宏:

#define    random(r, g, b, a)    [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0]

#define    randomColor        random(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256))

注:

arc4random_uniform( )这个函数不像arc4random( )产生的数那么大,arc4random_uniform(n)可以产生1-(n-1)之间的数

二、UIColor十六进制颜色转换的分类:

UIColor+CustomColor.h

#import@interface UIColor (CustomColor)

/** 从十六进制字符串获取颜色 */

+ (UIColor *) colorWithHexString: (NSString *)color alpha:(CGFloat)alpha;

@end

UIColor+CustomColor.m

#import "UIColor+CustomColor.h"

@implementation UIColor (CustomColor)

+ (UIColor *) colorWithHexString: (NSString *)color alpha:(CGFloat)alpha

{

// 删除字符串中的空格

NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];

// String should be 6 or 8 characters

if ([cString length] < 6) {

return [UIColor clearColor];

}

// strip 0X if it appears

//如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾

if ([cString hasPrefix:@"0X"])

cString = [cString substringFromIndex:2];

//如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾

if ([cString hasPrefix:@"#"])

cString = [cString substringFromIndex:1];

if ([cString length] != 6)

return [UIColor clearColor];

// Separate into r, g, b substrings

NSRange range;

range.location = 0;

range.length = 2;

//r

NSString *rString = [cString substringWithRange:range];

//g

range.location = 2;

NSString *gString = [cString substringWithRange:range];

//b

range.location = 4;

NSString *bString = [cString substringWithRange:range];

// Scan values

unsigned int r, g, b;

[[NSScanner scannerWithString:rString] scanHexInt:&r];

[[NSScanner scannerWithString:gString] scanHexInt:&g];

[[NSScanner scannerWithString:bString] scanHexInt:&b];

return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:alpha];

}

@end

使用:

self.view.backgroundColor = [UIColor colorWithHexString:@"#f8f8f8" alpha:1.0];

你可能感兴趣的:(iOS 随机颜色和十六进制颜色转换)