UIColor(QMUI)
@interface UIColor (QMUI)
/**
* 使用HEX命名方式的颜色字符串生成一个UIColor对象
*
* @param hexString 支持以 # 开头和不以 # 开头的 hex 字符串
* #RGB 例如#f0f,等同于#ffff00ff,RGBA(255, 0, 255, 1)
* #ARGB 例如#0f0f,等同于#00ff00ff,RGBA(255, 0, 255, 0)
* #RRGGBB 例如#ff00ff,等同于#ffff00ff,RGBA(255, 0, 255, 1)
* #AARRGGBB 例如#00ff00ff,等同于RGBA(255, 0, 255, 0)
*
* @return UIColor对象
*/
+ (nullable UIColor *)qmui_colorWithHexString:(nullable NSString *)hexString;
/**
* 将当前色值转换为hex字符串,通道排序是AARRGGBB(与Android保持一致)
* @return 色值对应的 hex 字符串,以 # 开头,例如 #00ff00ff
*/
- (NSString *)qmui_hexString;
/**
* 获取当前 UIColor 对象里的红色色值
*
* @return 红色通道的色值,值范围为0.0-1.0
*/
- (CGFloat)qmui_red;
/**
* 获取当前 UIColor 对象里的绿色色值
*
* @return 绿色通道的色值,值范围为0.0-1.0
*/
- (CGFloat)qmui_green;
/**
* 获取当前 UIColor 对象里的蓝色色值
*
* @return 蓝色通道的色值,值范围为0.0-1.0
*/
- (CGFloat)qmui_blue;
/**
* 获取当前 UIColor 对象里的透明色值
*
* @return 透明通道的色值,值范围为0.0-1.0
*/
- (CGFloat)qmui_alpha;
/**
* 获取当前 UIColor 对象里的 hue(色相),注意 hue 的值是一个角度,所以0和1(0°和360°)是等价的,用 return 值去做判断时要特别注意。
*/
- (CGFloat)qmui_hue;
/**
* 获取当前 UIColor 对象里的 saturation(饱和度)
*/
- (CGFloat)qmui_saturation;
/**
* 获取当前 UIColor 对象里的 brightness(亮度)
*/
- (CGFloat)qmui_brightness;
/**
* 将当前UIColor对象剥离掉alpha通道后得到的色值。相当于把当前颜色的半透明值强制设为1.0后返回
*
* @return alpha通道为1.0,其他rgb通道与原UIColor对象一致的新UIColor对象
*/
- (nullable UIColor *)qmui_colorWithoutAlpha;
/**
* 计算当前color叠加了alpha之后放在指定颜色的背景上的色值
*/
- (UIColor *)qmui_colorWithAlpha:(CGFloat)alpha backgroundColor:(nullable UIColor *)backgroundColor;
/**
* 计算当前color叠加了alpha之后放在白色背景上的色值
*/
- (UIColor *)qmui_colorWithAlphaAddedToWhite:(CGFloat)alpha;
/**
* 将自身变化到某个目标颜色,可通过参数progress控制变化的程度,最终得到一个纯色
* @param toColor 目标颜色
* @param progress 变化程度,取值范围0.0f~1.0f
*/
- (UIColor *)qmui_transitionToColor:(nullable UIColor *)toColor progress:(CGFloat)progress;
/**
* 判断当前颜色是否为深色,可用于根据不同色调动态设置不同文字颜色的场景。
*
* @link http://stackoverflow.com/questions/19456288/text-color-based-on-background-image @/link
*
* @return 若为深色则返回“YES”,浅色则返回“NO”
*/
- (BOOL)qmui_colorIsDark;
/**
* @return 当前颜色的反色,不管传入的颜色属于什么 colorSpace,最终返回的反色都是 RGB
*
* @link http://stackoverflow.com/questions/5893261/how-to-get-inverse-color-from-uicolor @/link
*/
- (UIColor *)qmui_inverseColor;
/**
* 判断当前颜色是否等于系统默认的 tintColor 颜色。
* 背景:如果将一个 UIView.tintColor 设置为 nil,表示这个 view 的 tintColor 希望跟随 superview.tintColor 变化而变化,所以设置完再获取 view.tintColor,得到的并非 nil,而是 superview.tintColor 的值,而如果整棵 view 层级树里的 view 都没有设置自己的 tintColor,则会返回系统默认的 tintColor(也即 [UIColor qmui_systemTintColor]),所以才提供这个方法用于代替判断 tintColor == nil 的作用。
*/
- (BOOL)qmui_isSystemTintColor;
/**
* 获取当前系统的默认 tintColor 色值
*/
+ (UIColor *)qmui_systemTintColor;
/**
* 计算两个颜色叠加之后的最终色(注意区分前景色后景色的顺序)<br/>
* @link http://stackoverflow.com/questions/10781953/determine-rgba-colour-received-by-combining-two-colours @/link
*/
+ (UIColor *)qmui_colorWithBackendColor:(UIColor *)backendColor frontColor:(UIColor *)frontColor;
/**
* 将颜色A变化到颜色B,可通过progress控制变化的程度
* @param fromColor 起始颜色
* @param toColor 目标颜色
* @param progress 变化程度,取值范围0.0f~1.0f
*/
+ (UIColor *)qmui_colorFromColor:(UIColor *)fromColor toColor:(UIColor *)toColor progress:(CGFloat)progress;
/**
* 产生一个随机色,大部分情况下用于测试
*/
+ (UIColor *)qmui_randomColor;
@end
Undocumented
-
使用HEX命名方式的颜色字符串生成一个UIColor对象
Declaration
Objective-C
+ (nullable UIColor *)qmui_colorWithHexString:(nullable NSString *)hexString;
Swift
class func qmui_color(withHexString hexString: String?) -> UIColor?
Parameters
hexString
支持以 # 开头和不以 # 开头的 hex 字符串 #RGB 例如#f0f,等同于#ffff00ff,RGBA(255, 0, 255, 1) #ARGB 例如#0f0f,等同于#00ff00ff,RGBA(255, 0, 255, 0) #RRGGBB 例如#ff00ff,等同于#ffff00ff,RGBA(255, 0, 255, 1) #AARRGGBB 例如#00ff00ff,等同于RGBA(255, 0, 255, 0)
Return Value
UIColor对象
-
将当前色值转换为hex字符串,通道排序是AARRGGBB(与Android保持一致)
Declaration
Objective-C
- (nonnull NSString *)qmui_hexString;
Swift
func qmui_hexString() -> String
Return Value
色值对应的 hex 字符串,以 # 开头,例如 #00ff00ff
-
获取当前 UIColor 对象里的红色色值
Declaration
Objective-C
- (CGFloat)qmui_red;
Swift
func qmui_red() -> CGFloat
Return Value
红色通道的色值,值范围为0.0-1.0
-
获取当前 UIColor 对象里的绿色色值
Declaration
Objective-C
- (CGFloat)qmui_green;
Swift
func qmui_green() -> CGFloat
Return Value
绿色通道的色值,值范围为0.0-1.0
-
获取当前 UIColor 对象里的蓝色色值
Declaration
Objective-C
- (CGFloat)qmui_blue;
Swift
func qmui_blue() -> CGFloat
Return Value
蓝色通道的色值,值范围为0.0-1.0
-
获取当前 UIColor 对象里的透明色值
Declaration
Objective-C
- (CGFloat)qmui_alpha;
Swift
func qmui_alpha() -> CGFloat
Return Value
透明通道的色值,值范围为0.0-1.0
-
获取当前 UIColor 对象里的 hue(色相),注意 hue 的值是一个角度,所以0和1(0°和360°)是等价的,用 return 值去做判断时要特别注意。
Declaration
Objective-C
- (CGFloat)qmui_hue;
Swift
func qmui_hue() -> CGFloat
-
获取当前 UIColor 对象里的 saturation(饱和度)
Declaration
Objective-C
- (CGFloat)qmui_saturation;
Swift
func qmui_saturation() -> CGFloat
-
获取当前 UIColor 对象里的 brightness(亮度)
Declaration
Objective-C
- (CGFloat)qmui_brightness;
Swift
func qmui_brightness() -> CGFloat
-
将当前UIColor对象剥离掉alpha通道后得到的色值。相当于把当前颜色的半透明值强制设为1.0后返回
Declaration
Objective-C
- (nullable UIColor *)qmui_colorWithoutAlpha;
Swift
func qmui_colorWithoutAlpha() -> UIColor?
Return Value
alpha通道为1.0,其他rgb通道与原UIColor对象一致的新UIColor对象
-
计算当前color叠加了alpha之后放在指定颜色的背景上的色值
Declaration
Objective-C
- (nonnull UIColor *)qmui_colorWithAlpha:(CGFloat)alpha backgroundColor:(nullable UIColor *)backgroundColor;
Swift
func qmui_color(withAlpha alpha: CGFloat, backgroundColor: UIColor?) -> UIColor
-
计算当前color叠加了alpha之后放在白色背景上的色值
Declaration
Objective-C
- (nonnull UIColor *)qmui_colorWithAlphaAddedToWhite:(CGFloat)alpha;
Swift
func qmui_colorWithAlphaAdded(toWhite alpha: CGFloat) -> UIColor
-
将自身变化到某个目标颜色,可通过参数progress控制变化的程度,最终得到一个纯色
Declaration
Objective-C
- (nonnull UIColor *)qmui_transitionToColor:(nullable UIColor *)toColor progress:(CGFloat)progress;
Swift
func qmui_transition(to toColor: UIColor?, progress: CGFloat) -> UIColor
Parameters
toColor
目标颜色
progress
变化程度,取值范围0.0f~1.0f
-
判断当前颜色是否为深色,可用于根据不同色调动态设置不同文字颜色的场景。
@link http://stackoverflow.com/questions/19456288/text-color-based-on-background-image @/link
Declaration
Objective-C
- (BOOL)qmui_colorIsDark;
Swift
func qmui_colorIsDark() -> Bool
Return Value
若为深色则返回“YES”,浅色则返回“NO”
-
Declaration
Objective-C
- (nonnull UIColor *)qmui_inverseColor;
Swift
func qmui_inverse() -> UIColor
Return Value
当前颜色的反色,不管传入的颜色属于什么 colorSpace,最终返回的反色都是 RGB
-
判断当前颜色是否等于系统默认的 tintColor 颜色。 背景:如果将一个 UIView.tintColor 设置为 nil,表示这个 view 的 tintColor 希望跟随 superview.tintColor 变化而变化,所以设置完再获取 view.tintColor,得到的并非 nil,而是 superview.tintColor 的值,而如果整棵 view 层级树里的 view 都没有设置自己的 tintColor,则会返回系统默认的 tintColor(也即 [UIColor qmui_systemTintColor]),所以才提供这个方法用于代替判断 tintColor == nil 的作用。
Declaration
Objective-C
- (BOOL)qmui_isSystemTintColor;
Swift
func qmui_isSystemTintColor() -> Bool
-
获取当前系统的默认 tintColor 色值
Declaration
Objective-C
+ (nonnull UIColor *)qmui_systemTintColor;
Swift
class func qmui_systemTint() -> UIColor
-
计算两个颜色叠加之后的最终色(注意区分前景色后景色的顺序)
@link http://stackoverflow.com/questions/10781953/determine-rgba-colour-received-by-combining-two-colours @/linkDeclaration
Objective-C
+ (nonnull UIColor *)qmui_colorWithBackendColor:(nonnull UIColor *)backendColor frontColor:(nonnull UIColor *)frontColor;
Swift
class func qmui_color(withBackendColor backendColor: UIColor, frontColor: UIColor) -> UIColor
-
将颜色A变化到颜色B,可通过progress控制变化的程度
Declaration
Objective-C
+ (nonnull UIColor *)qmui_colorFromColor:(nonnull UIColor *)fromColor toColor:(nonnull UIColor *)toColor progress:(CGFloat)progress;
Swift
class func qmui_color(from fromColor: UIColor, to toColor: UIColor, progress: CGFloat) -> UIColor
Parameters
fromColor
起始颜色
toColor
目标颜色
progress
变化程度,取值范围0.0f~1.0f
-
产生一个随机色,大部分情况下用于测试
Declaration
Objective-C
+ (nonnull UIColor *)qmui_randomColor;
Swift
class func qmui_random() -> UIColor