UIColor - 颜色数据对象
存储颜色数据的对象,有时也存储不透明度。颜色对象可以通过多种方式创建,UIKit提供了标准的系统颜色(如红色、橙色、黄色等),可以用于为UI元素(如标签、文本和按钮)指定系统提供的颜色,还可以通过指定颜色分量值(例如 RGB、色调和饱和度)来创建颜色对象,还可以从其他颜色对象创建颜色,甚至从图像中创建基于图案的颜色。
大多数开发人员不需要子类化UIColor。唯一可能需要子类化的情况是需要支持其他颜色空间或颜色模型。如果进行子类化,添加的属性和方法必须可以安全地从多个线程中使用。
UIColor常用属性
- 标准的系统颜色:
// 黑色
@property(class, nonatomic, readonly) UIColor *blackColor;
// 深灰色
@property(class, nonatomic, readonly) UIColor *darkGrayColor;
// 浅灰色
@property(class, nonatomic, readonly) UIColor *lightGrayColor;
// 白色
@property(class, nonatomic, readonly) UIColor *whiteColor;
// 灰色
@property(class, nonatomic, readonly) UIColor *grayColor;
// 红色
@property(class, nonatomic, readonly) UIColor *redColor;
// 绿色
@property(class, nonatomic, readonly) UIColor *greenColor;
// 蓝色
@property(class, nonatomic, readonly) UIColor *blueColor;
// 青色
@property(class, nonatomic, readonly) UIColor *cyanColor;
// 黄色
@property(class, nonatomic, readonly) UIColor *yellowColor;
// 品红色
@property(class, nonatomic, readonly) UIColor *magentaColor;
// 橙色
@property(class, nonatomic, readonly) UIColor *orangeColor;
// 紫色
@property(class, nonatomic, readonly) UIColor *purpleColor;
// 棕色
@property(class, nonatomic, readonly) UIColor *brownColor;
// 透明色
@property(class, nonatomic, readonly) UIColor *clearColor;
@property(nonatomic,readonly) CGColorRef CGColor;
属性描述 :与接收器颜色相对应的Quartz颜色参考。通常用于图层�(CALayer)的边框、阴影等颜色。
@property(nonatomic,readonly) CIColor *CIColor API_AVAILABLE(ios(5.0));
属性描述 :与颜色对象相对应的核心图像(Core Image)颜色。如果颜色对象未使用Core Image颜色初始化,则此属性将引发异常。此属性中的颜色对象不会自动适应“暗模式”的更改。
UIColor常用函数
+ (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha;
函数描述 :使用指定的不透明度和灰度值创建颜色对象。
参数 :
white :颜色对象的灰度值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的灰度值被解释为0.0,高于1.0的值被解释为1.0。值越小灰度越高,0.0为黑色,值越大灰度越低,1.0为白色。
alpha : 颜色对象的不透明度值,指定为0.0到1.0之间的值。小于0.0的Alpha值解释为0.0,大于1.0的值解释为1.0。
返回值 : 颜色对象。此对象表示的颜色信息位于设备的灰色颜色空间中。
+ (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha;
函数描述 :使用指定的不透明度和HSB颜色空间组件值创建颜色对象。
参数 :
hue : 颜色对象的色调值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的色调值解释为0.0,高于1.0的色调值解释为1.0。
saturation : 颜色对象的饱和度值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的饱和值解释为0.0,高于1.0的值解释为1.0。
brightness : 颜色对象的亮度值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的亮度值解释为0.0,高于1.0的亮度值解释为1.0。
alpha : 颜色对象的不透明度值,指定为0.0到1.0之间的值。小于0.0的Alpha值解释为0.0,大于1.0的值解释为1.0。
返回值 : 颜色对象。此对象表示的颜色信息位于RGB颜色空间中。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展范围的sRGB颜色空间中指定的。在早期版本的iOS上,颜色是在设备RGB颜色空间中指定的。
UIView *view = [[UIView alloc]initWithFrame:CGRectZero];
view.backgroundColor = [UIColor colorWithHue:drand48() saturation:1.0 brightness:1.0 alpha:1.0];
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self.view);
make.size.mas_equalTo(CGSizeMake(100, 100));
}];
+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;
函数描述 : 使用指定的不透明度和RGB组件值创建颜色对象。
参数 :
red : 颜色对象的红色值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的红色值解释为0.0,高于1.0的值解释为1.0。
green : 颜色对象的绿色值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的绿色值被解释为0.0,高于1.0的值被解释为1.0。
blue : 颜色对象的蓝色值。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被钳制。在早期版本的iOS上,低于0.0的蓝色值被解释为0.0,高于1.0的值被解释为1.0。
alpha : 颜色对象的不透明度值,指定为0.0到1.0之间的值。小于0.0的Alpha值解释为0.0,大于1.0的值解释为1.0
返回值 : 颜色对象。此对象表示的颜色信息位于RGB颜色空间中。在为iOS 10或更高版本链接的应用程序上,颜色是在扩展范围的sRGB颜色空间中指定的。在早期版本的iOS上,颜色是在设备RGB颜色空间中指定的。
+ (UIColor *)colorWithPatternImage:(UIImage *)image;
函数描述 :使用指定的图像创建颜色对象。可以使用图案颜色设置填充或边框颜色。像设置纯色一样。在绘制过程中,图案颜色中的图像按需要平铺以覆盖给定的区域。默认情况下,返回颜色的相位为0,这将导致图像的左上角与绘图原点对齐。要更改相位,请将颜色设置为当前颜色,然后使用CGContextSetPatternPhase函数更改相位。
参数 :
image : 创建图案颜色时要使用的图像。
返回值 : 图案颜色。
- (BOOL)getWhite:(nullable CGFloat *)white alpha:(nullable CGFloat *)alpha API_AVAILABLE(ios(5.0));
函数描述 :返回颜色的灰度分量。如果该颜色位于兼容的颜色空间中,则该颜色可以转换为灰度格式并返回给应用程序。如果颜色不在兼容的颜色空间中,则参数无效。
参数 :
white : 返回时,颜色对象的灰度成分。在为iOS 10或更高版本链接的应用程序上,灰度组件是在扩展范围的灰色空间中指定的,可以有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
alpha : 返回时,颜色对象的不透明度组件,指定为介于0.0和1.0之间的值。
返回值 : 如果颜色可以转换,则为“YES”,否则为“NO”。
- (BOOL)getHue:(nullable CGFloat *)hue saturation:(nullable CGFloat *)saturation brightness:(nullable CGFloat *)brightness alpha:(nullable CGFloat *)alpha API_AVAILABLE(ios(5.0));
函数描述 :返回组成HSB颜色空间中颜色的组件。如果该颜色位于兼容的颜色空间中,则该颜色可以转换为HSB颜色空间,其组件将返回到应用程序。如果颜色不在兼容的颜色空间中,则参数无效。
参数 :
hue : 返回时,颜色对象的色调组件。在为iOS 10或更高版本链接的应用程序上,色调组件在扩展范围颜色空间中指定,并且可以具有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
saturation : 返回时,颜色对象的饱和度分量。在为iOS 10或更高版本链接的应用程序上,饱和分量是在扩展范围颜色空间中指定的,可以有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
brightness : 返回时,颜色对象的亮度分量。在为iOS 10或更高版本链接的应用程序上,亮度组件是在扩展范围颜色空间中指定的,可以有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
alpha : 返回时,颜色对象的不透明度组件,指定为介于0.0和1.0之间的值。
返回值 : 如果颜色可以转换,则为“YES”,否则为“NO”。
- (BOOL)getRed:(nullable CGFloat *)red green:(nullable CGFloat *)green blue:(nullable CGFloat *)blue alpha:(nullable CGFloat *)alpha API_AVAILABLE(ios(5.0));
函数描述 :返回组成RGB颜色空间中颜色的组件。如果该颜色位于兼容的颜色空间中,则该颜色可以转换为RGB格式,其组件将返回到应用程序。如果颜色不在兼容的颜色空间中,则参数无效。
参数 :
red : 返回时,颜色对象的红色组件。在为iOS 10或更高版本链接的应用程序上,红色组件在扩展范围的sRGB颜色空间中指定,并且可以有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
green : 返回时,颜色对象的绿色组件。在为iOS 10或更高版本链接的应用程序上,绿色组件在扩展范围的sRGB颜色空间中指定,并且可以有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
blue : 返回时,颜色对象的蓝色组件。在为iOS 10或更高版本链接的应用程序上,蓝色组件在扩展范围的sRGB颜色空间中指定,并且可以有任何值。介于0.0和1.0之间的值在sRGB颜色范围内。在早期版本的iOS上,指定的值始终在0.0到1.0之间。
alpha : 返回时,颜色对象的不透明度组件,指定为介于0.0和1.0之间的值。
返回值 : 如果颜色可以转换,则为“YES”,否则为“NO”。
- (UIColor *)colorWithAlphaComponent:(CGFloat)alpha;
函数描述 :创建颜色对象,该对象具有与调用方相同的颜色空间和组件值,但具有指定的不透明度。具有显式不透明度组件的子类应重写此方法以返回具有指定alpha的颜色。
参数 :
alpha : 新颜色对象的不透明度值,指定为0.0到1.0之间的值。小于0.0的Alpha值解释为0.0,大于1.0的值解释为1.0。
返回值 : 新的UIColor对象。
- (void)viewDidLoad {
CGRect screen = [[UIScreen mainScreen]bounds];
CGFloat viewWidth = 150.0;
CGFloat viewHeight = 150.0;
UIView *View = [[UIView alloc]initWithFrame:CGRectMake((screen.size.width - viewWidth) / 2, (screen.size.height - viewHeight) / 2, viewWidth, viewHeight)];
View.backgroundColor = [self colorOfHexString:@"#58b4ff"];
[self.view addSubview:View];
}
- (UIColor*)colorOfHexString:(NSString*)hexString {
NSScanner* scanner = [NSScanner scannerWithString:hexString];
if ([hexString hasPrefix:@"#"]) {
[scanner setScanLocation:1];
}
unsigned hexNum;
if (![scanner scanHexInt:&hexNum]) {
return nil;
}
int r = (hexNum >> 16) & 0xFF;
int g = (hexNum >> 8) & 0xFF;
int b = (hexNum)&0xFF;
return [UIColor colorWithRed:r / 255.0f green:g / 255.0f blue:b / 255.0f alpha:1.0f];
}
效果: