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】