iOS開發_修改顏色Color
阿新 • • 發佈:2022-12-08
-
UIColor+Modify.h
#import <UIKit/UIKit.h> @interface UIColor (Modify) /** * @brief 反轉顏色 * * @return 反轉處理後的顏色 */ - (UIColor *)inverted; /** * @brief 半透明顏色 * * @return 半透明處理後的顏色 */ - (UIColor *)translucence; /** * @brief 使明亮顏色 * * @return 使明亮處理後的顏色 */ - (UIColor *)lighten:(CGFloat)lighten; /** * @brief 使變暗顏色 * * @return 使變暗處理後的顏色 */ - (UIColor *)darken:(CGFloat)darken; @end
-
UIColor+Modify.m
#import "UIColor+Modify.h" @implementation UIColor (Modify) /** * @brief 反轉顏色 * * @return 反轉處理後的顏色 */ - (UIColor *)inverted { NSArray *components = [self component_array]; return [UIColor colorWithRed:1-[components[0] doubleValue] green:1-[components[1] doubleValue] blue:1-[components[2] doubleValue] alpha:[components[3] doubleValue]]; } /** * @brief 半透明顏色 * * @return 半透明處理後的顏色 */ - (UIColor *)translucence { CGFloat hue = 0, saturation = 0, brightness = 0, alpha = 0; [self getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha]; return [UIColor colorWithHue:hue saturation:saturation*1.158 brightness:brightness*0.95 alpha:alpha]; } /** * @brief 使明亮顏色 * * @return 使明亮處理後的顏色 */ - (UIColor *)lighten:(CGFloat)lighten { CGFloat hue = 0, saturation = 0, brightness = 0, alpha = 0; [self getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha]; return [UIColor colorWithHue:hue saturation:saturation*(1-lighten) brightness:brightness*(1+lighten) alpha:alpha]; } /** * @brief 使變暗顏色 * * @return 使變暗處理後的顏色 */ - (UIColor *)darken:(CGFloat)darken { CGFloat hue = 0, saturation = 0, brightness = 0, alpha = 0; [self getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha]; return [UIColor colorWithHue:hue saturation:saturation*(1+darken) brightness:brightness*(1-darken) alpha:alpha]; } /** * @brief 顏色組合 * * @return 顏色組合 */ - (NSArray *)component_array { CGFloat red, green, blue, alpha; const CGFloat *components = CGColorGetComponents([self CGColor]); if (CGColorGetNumberOfComponents([self CGColor]) == 2) { red = components[0]; green = components[0]; blue = components[0]; alpha = components[1]; } else { red = components[0]; green = components[1]; blue = components[2]; alpha = components[3]; } return @[@(red), @(green), @(blue), @(alpha)]; } @end