MPColorTools 1.6.1

MPColorTools 1.6.1

测试已测试
Lang语言 Obj-CObjective C
许可 Apache 2
发布最后发布2014年12月

Daniele Di Bernardo 维护。



  • Daniele Di Bernardo

MPColorTools

一个用于处理 iOS SDK 中颜色的工具集合。

此工具将添加一些便利的宏,以在飞行中创建颜色,并将添加与 HSL 值(而不是仅 RGB 和 HSV/HSB)一起工作的功能。

由于在 RGB (0,255) 范围内处理颜色值更为频繁,此工具将添加几个宏,使您能够轻松定义颜色,而无需将这些值转换为 (0.0, 1.0) 范围。

安装

手动安装

只需将这两个主要文件添加到您的项目中

  1. MPColorTools.h
  2. MPColorTools.m

使用方法

简写宏

您可以使用 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 脚本文件,您可以从字符串十六进制值创建颜色。值可以定义为以下格式

  1. RGB
  2. RGBA
  3. RRGGBB
  4. RRGGBBAA

即你可以创建颜色如下

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

色调/饱和度/亮度(HSL)支持

由于 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);

CMYK 支持

由于 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°

Adding 30 degrees

+60°

Adding 60 degrees

-120°

Removing 120 degrees

以下所有方法都使用这个方法来计算这些常见的配色方案。

互补色

Complementary colors

返回互补色。

UIColor *complementary = [myColor complementaryColor];

三分色

Triadic colors

使用 triadicColors 方法将返回一个包含三个颜色数组的数组,这三个颜色在色轮上均匀地以120°间隔,中间的颜色是 myColor

NSArray *triadic = [myColor triadicColors];

正方色

Square colors

使用 squareColors,您将得到一个包含四个均匀间隔的颜色数组(每个颜色之间有90°的偏移),第一个是参考颜色。

NSArray *square = [myColor squareColors];

分割互补色

Split-complementary colors

分割互补色是包含三个颜色的数组,其中中间的颜色是参考颜色,另外两个颜色是相对于该参考颜色偏移 +/- 150° 的颜色。如果参考颜色是原色,分割互补色将包含其互补色附近最近的二次色。

NSArray *splitComplementary = [myColor splitComplementaryColors];

类似色

Analogous colors

类似色将返回一个包含五个颜色的数组(中间的是参考颜色),它们之间均匀地以给定角度间隔。通常您应该保持这个角度较低(例如,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

除非适用法律或书面同意,否则按照本许可证分发的软件基于“的现状”进行分发,不得保证或条件,无论是明示的还是默示的。请参阅许可证中具体规定许可和限制的条款。