UIColor

在UI框架中,这个类的使用频率非常之高。我们以一个小需求,引出我们的 UIColor .

需求:

分析:三个按钮底部的颜色均为半透明;

方案一:三个按钮均添加到一个View上,然后改变View的颜色透明通道(不是设置view.alpha = 0.5f)。

方案二:三个按钮均添加到一个View上,然后把View的颜色用一张透明图片来实现。

实现

方案一:先实现一个简单的同样效果的Demo,示例代码:

 1     // 测试
 2     UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 300, 100)];
 3     testView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.1];
 4     [self.view addSubview:testView];
 5     // label的颜色不需要设置,默认为 clearColor 即可
 6     UILabel *label = [[UILabel alloc] initWithFrame:testView.bounds];
 7     label.text = @"Learning…………";
 8     label.textColor = [UIColor redColor];
 9     label.textAlignment = NSTextAlignmentCenter;
10     [self.view addSubview:label];
11     [testView addSubview:label];

整体效果:

其中核心是:

- (UIColor *)colorWithAlphaComponent:(CGFloat)alpha;

该方法,指定一个初始颜色,然后改变该颜色的透明通道,即可实现如上图透视的效果!

 

方案二:

    // 测试
    UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 300, 100)];
    testView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"transparent"]];
    [self.view addSubview:testView];

    UILabel *label = [[UILabel alloc] initWithFrame:testView.bounds];
    label.text = @"Learning…………";
    label.textColor = [UIColor redColor];
    label.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:label];
    [testView addSubview:label];

核心是:

1 + (UIColor *)colorWithPatternImage:(UIImage *)image;

该方法中,平铺一张图片作为颜色(我使用的是半透明图片)。即可实现上面的效果!

 

接下来,在查看一下苹果提供的关于 UIColor 的方法:

 1 /**
 2  *  @brief 设置颜色
 3  *
 4  *  @param white 白色(0-255)
 5  *  @param alpha 透明度
 6  *
 7  *  @return 返回颜色值
 8  */
 9 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha;
10 
11 /**
12  *  @brief 设置颜色
13  *
14  *  @param hue        色调
15  *  @param saturation 饱和度
16  *  @param brightness 亮度
17  *  @param alpha      透明度
18  *
19  *  @return 返回颜色值
20  */
21 + (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha;
22 
23 /**
24  *  @brief 设置颜色
25  *
26  *  @param red   0-255
27  *  @param green 0-255
28  *  @param blue  0-255
29  *  @param alpha 透明度
30  *
31  *  @return 返回颜色值
32  */
33 + (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;
34 
35 /**
36  *  @brief 设置颜色
37  *
38  *  @param cgColor CoreFoundation框架的,e.g.(__bridge CGColorRef _Nonnull)([UIColor blackColor])
39  *
40  *  @return 返回颜色值
41  */
42 + (UIColor *)colorWithCGColor:(CGColorRef)cgColor;
43 
44 /**
45  *  @brief 设置颜色
46  *
47  *  @param image 指定作为颜色的平铺图片
48  *
49  *  @return 返回颜色值
50  */
51 + (UIColor *)colorWithPatternImage:(UIImage *)image;

还有系统提供的一些指定纯色的类方法和实例方法,不再一一指出!

另,对于常用的颜色值和指定颜色的方法,例如随机色、指定RGB颜色(0-1)等方法可以写成 Macro 或 Category ,方便我们的使用!

尊重作者劳动成果,转载请注明: 【kingdev】

posted @ 2016-03-30 13:57  Kingdev  阅读(302)  评论(0编辑  收藏  举报