测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可 | Apache 2 |
发布最后发布 | 2014年12月 |
由 Daniele Di Bernardo 维护。
一个用于处理 iOS SDK 中颜色的工具集合。
此工具将添加一些便利的宏,以在飞行中创建颜色,并将添加与 HSL 值(而不是仅 RGB 和 HSV/HSB)一起工作的功能。
由于在 RGB (0,255)
范围内处理颜色值更为频繁,此工具将添加几个宏,使您能够轻松定义颜色,而无需将这些值转换为 (0.0, 1.0)
范围。
只需将这两个主要文件添加到您的项目中
您可以使用 RGB 值(0,255)范围创建颜色
UIColor *myColor = MP_RGB(100, 120, 200);
并且将能够使用自定义 alpha 值创建它们
UIColor *myTransparentColor = MP_RGBA(100, 120, 200, 0.2);
如果您需要创建灰度颜色,也为此提供了几个宏
UIColor *myGrayColor = MP_GRAY(128);
UIColor *myGrayTransparentColor = MP_GRAYA(128, 0.2);
类似于 CSS 脚本文件,您可以从字符串十六进制值创建颜色。值可以定义为以下格式
即你可以创建颜色如下
UIColor *myHexColor = MP_HEX_RGB(@"FCE"); // Will be the equivalent of using @"FFCCEEFF"
UIColor *myHexFullColor = MP_HEX_RGB(@"AAB678CC");
如果您使用纯整数值来处理颜色,您可以使用此方法
UIColor *myHexIntColor = [UIColor colorWithRGB:0xff443c];
UIColor *myHexIntShortColor = MP_HEX_INT(0xff443c);
UIColor *myHexIntShortTransparentColor = MP_HEX_INTA(0xff443c, 0.2);
您可以使用这些两个方法检索颜色值的十六进制表示
NSUInteger myHexValue = [myColor hexValue];
NSString *myHexString = [myColor hexString];
由于 iOS SDK 中缺少 HSL 值支持,增加了一些实用的功能
UIColor *hslColor = [UIColor colorWithHue:0.1 saturation:0.4 lightness:0.6 alpha:1];
或简称
UIColor *hslColor = MP_HSL(0.1, 0.4, 0.6);
由于 iOS SDK 缺少 CMYK 颜色空间,此工具将使创建 CMYK 颜色空间中的颜色成为可能,并且还可以从现有颜色获取 CMYK 值
UIColor *cmykColor = [UIColor colorWithCyan:0.3 magenta:0.9 yellow:1.0 keyBlack:0.1];
UIColor *cmykShortColor = MP_CMYK(0.3,0.9,1.0,0.1);
您可以使用 UIColor
直接调整颜色的亮度和暗度。这两个函数将通过指定百分比增加或减少亮度。
UIColor *lighterColor = [myColor colorLightenedBy:0.1];
UIColor *darkerColor = [myColor colorDarkenedBy:0.1];
如果您想将自定义值添加或减去到亮度参数中,可以使用以下函数:
UIColor *lighterColor = [myColor colorByAddingLightness:0.5];
如果您想从现有的颜色生成一个新颜色,并使用自定义的亮度值(忽略当前值),可以使用以下函数:
UIColor *lighterColor = [myColor colorWithLighness:0.7];
UIColor *lighterTransparentColor = [myColor colorWithLighness:0.7 alpha:0.2];
您可以从一个参考颜色开始,计算互补色、三分色、正方色、类似色和分割互补色。
更普遍地说,您可以通过添加在 (-360, 360)
范围内表示为整数的角度来在色轮上偏移颜色。这是通过以下方法实现的:
UIColor *offsetColor = [myColor colorByAddingAngle:125];
如果添加的角度为正,则旋转为逆时针;如果为负,则为顺时针。
示例
+30°
+60°
-120°
以下所有方法都使用这个方法来计算这些常见的配色方案。
返回互补色。
UIColor *complementary = [myColor complementaryColor];
使用 triadicColors
方法将返回一个包含三个颜色数组的数组,这三个颜色在色轮上均匀地以120°间隔,中间的颜色是 myColor
。
NSArray *triadic = [myColor triadicColors];
使用 squareColors
,您将得到一个包含四个均匀间隔的颜色数组(每个颜色之间有90°的偏移),第一个是参考颜色。
NSArray *square = [myColor squareColors];
分割互补色是包含三个颜色的数组,其中中间的颜色是参考颜色,另外两个颜色是相对于该参考颜色偏移 +/- 150° 的颜色。如果参考颜色是原色,分割互补色将包含其互补色附近最近的二次色。
NSArray *splitComplementary = [myColor splitComplementaryColors];
类似色将返回一个包含五个颜色的数组(中间的是参考颜色),它们之间均匀地以给定角度间隔。通常您应该保持这个角度较低(例如,20-30°),以便得到在色轮上接近的颜色数组。
NSArray *analogous = [myColor analogousColorsWithAngle:30];
收集一个 UIColor
实例的单个颜色空间值相当困难。现在您可以使用简单的获取器轻松访问任何想要的值。
UIColor *myColor = MP_RGB(125,125,90);
CGFloat red = myColor.red;
CGFloat light = myColor.lightness;
...
UIColor
是不可变的对象,所以不可能即时更改颜色空间值。此工具只是创建了一系列快速实例方法来复制颜色,并在其中更改单个颜色空间值。这与使用设置器一样简单,唯一的区别是您将创建一个具有新值的单独对象。
UIColor *myColor = MP_GRAY(64);
UIColor *darkRedColor = [myColor colorWithRed:1];
请注意,这些“设置器”方法将接受与所有其他 UIColor
方法相同的值范围 [0,1]
。
版权 [2013-2014] Daniele Di Bernardo
根据 Apache License,版本 2.0(“许可证”);除非遵守本许可证,否则您不得使用此文件。您可以在以下位置获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律或书面同意,否则按照本许可证分发的软件基于“的现状”进行分发,不得保证或条件,无论是明示的还是默示的。请参阅许可证中具体规定许可和限制的条款。