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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、不想每次都除255.0 + (UIColor *)colorWithR:(CGFloat)red G:(CGF...
    Moker_C阅读 305评论 0 1
  • iOS中的颜色有UIColor、CGColor、CIColor三种,下面对三种颜色分别进行说明: 一、常用的UIC...
    lfp901020阅读 6,731评论 0 7
  • 1. 打印View所有子视图 po [[self view]recursiveDescription] 2. la...
    浩成哥哥阅读 807评论 0 0
  • 我喜欢按部就班、循规蹈矩的生活。所以我喜欢制定各种计划:年计划、月计划、周计划、日计划、课时计划。当生活和工...
    鹿鸣阁主阅读 307评论 2 2
  • 写第一篇文章的时候 还是年初 现在已经到了年末了。来不及分享这些点点滴滴 现实又在拼命赶路。人生短短几十年 与谁相...
    卉卉在哪里阅读 158评论 0 0