//
// ViewController.m
// UIColor详解
//
// Created by 大欢 on 16/1/18.
// Copyright © 2016年 bjsxt. All rights reserved.
//
#import "ViewController.h"
#import "UIColor+HEX.h"
#define RGBA(r,g,b,a) [UIColor colorWithRed:(r)/255.f green:(g)/255.f blue:(b)/255.f alpha:(a)];
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor orangeColor];
UIView * v = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
v.backgroundColor = [UIColor greenColor];
// 图片转换color
//[UIColor colorWithPatternImage:[UIImage imageNamed:@"haha"]];
// saturation饱和度 brightness亮度
//[UIColor colorWithHue:0.4 saturation:1 brightness:1 alpha:1];
//[UIColor colorWithHex:0x228942];
//[UIColor colorWithHexString:@"#228942"];
//RGBA(124, 172, 226, 1);
//#228942
//区间0 ~ 1
//[UIColor colorWithRed:124/255.f green:172/255.f blue:226/255.f alpha:1];
//灰度颜色0 ~ 1
//[UIColor colorWithWhite:1 alpha:1];
//[UIColor grayColor];
[self.view addSubview:v];
}
@end
//
// UIColor+HEX.h
// IOS-Categories
//
// Created by Jakey on 14/12/15.
// Copyright (c) 2014年 www.skyfox.org. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIColor (HEX)
+ (UIColor *)colorWithHex:(UInt32)hex;
+ (UIColor *)colorWithHex:(UInt32)hex andAlpha:(CGFloat)alpha;
+ (UIColor *)colorWithHexString:(NSString *)hexString;
- (NSString *)HEXString;
@end
//
// UIColor+HEX.m
// IOS-Categories
//
// Created by Jakey on 14/12/15.
// Copyright (c) 2014年 www.skyfox.org. All rights reserved.
//
#import "UIColor+HEX.h"
CGFloat colorComponentFrom(NSString *string, NSUInteger start, NSUInteger length) {
NSString *substring = [string substringWithRange:NSMakeRange(start, length)];
NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring];
unsigned hexComponent;
[[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent];
return hexComponent / 255.0;
}
@implementation UIColor (HEX)
+ (UIColor *)colorWithHex:(UInt32)hex{
return [UIColor colorWithHex:hex andAlpha:1];
}
+ (UIColor *)colorWithHex:(UInt32)hex andAlpha:(CGFloat)alpha{
return [UIColor colorWithRed:((hex >> 16) & 0xFF)/255.0
green:((hex >> 8) & 0xFF)/255.0
blue:(hex & 0xFF)/255.0
alpha:alpha];
}
+ (UIColor *)colorWithHexString:(NSString *)hexString {
CGFloat alpha, red, blue, green;
NSString *colorString = [[hexString stringByReplacingOccurrencesOfString:@"#" withString:@""] uppercaseString];
switch ([colorString length]) {
case 3: // #RGB
alpha = 1.0f;
red = colorComponentFrom(colorString, 0, 1);
green = colorComponentFrom(colorString, 1, 1);
blue = colorComponentFrom(colorString, 2, 1);
break;
case 4: // #ARGB
alpha = colorComponentFrom(colorString, 0, 1);
red = colorComponentFrom(colorString, 1, 1);
green = colorComponentFrom(colorString, 2, 1);
blue = colorComponentFrom(colorString, 3, 1);
break;
case 6: // #RRGGBB
alpha = 1.0f;
red = colorComponentFrom(colorString, 0, 2);
green = colorComponentFrom(colorString, 2, 2);
blue = colorComponentFrom(colorString, 4, 2);
break;
case 8: // #AARRGGBB
alpha = colorComponentFrom(colorString, 0, 2);
red = colorComponentFrom(colorString, 2, 2);
green = colorComponentFrom(colorString, 4, 2);
blue = colorComponentFrom(colorString, 6, 2);
break;
default:
return nil;
}
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
- (NSString *)HEXString{
UIColor* color = self;
if (CGColorGetNumberOfComponents(color.CGColor) < 4) {
const CGFloat *components = CGColorGetComponents(color.CGColor);
color = [UIColor colorWithRed:components[0]
green:components[0]
blue:components[0]
alpha:components[1]];
}
if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) != kCGColorSpaceModelRGB) {
return [NSString stringWithFormat:@"#FFFFFF"];
}
return [NSString stringWithFormat:@"#%02X%02X%02X", (int)((CGColorGetComponents(color.CGColor))[0]*255.0),
(int)((CGColorGetComponents(color.CGColor))[1]*255.0),
(int)((CGColorGetComponents(color.CGColor))[2]*255.0)];
}
@end