美文网首页
UIColor学习笔记

UIColor学习笔记

作者: 寻心_0a46 | 来源:发表于2019-07-10 23:06 被阅读0次

UIColor

存储颜色数据的对象,有时也存储不透明度。颜色对象可以通过多种方式创建,UIKit提供了标准的系统颜色(如红色、橙色、黄色等),可以用于为UI元素(如标签、文本和按钮)指定系统提供的颜色;还可以通过指定颜色分量值(例如 RGB、色调和饱和度)来创建颜色对象;还可以从其他颜色对象创建颜色;甚至从图像中创建基于图案的颜色。

大多数开发人员不需要子类化UIColor。唯一可能需要子类化的情况是需要支持其他颜色空间或颜色模型。如果进行子类化,添加的属性和方法必须可以安全地从多个线程中使用。

UIColor常用属性
@property(nonatomic,readonly) CGColorRef CGColor;

属性描述 : 与接收器颜色相对应的Quartz颜色参考。

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颜色空间中指定的。

\color{red}{例如视图背景色随机 : }

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对象。

\color{red}{将16进制的颜色字符串转换为颜色:}

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

效果:

屏幕快照 2019-07-10 下午11.05.37.png

相关文章

网友评论

      本文标题:UIColor学习笔记

      本文链接:https://www.haomeiwen.com/subject/lkhlkctx.html