假设我有一个UIColor
UIColor *color = [UIColor redColor];
现在我想修改饱和度/色调/亮度,我该怎么做?我确实读了文档,但我还是很困惑
我想修改我自己制作的UIColor (UIColor redColor),而不是用一些首选项初始化一个新的颜色。我如何修改它,保留原来的。我知道colorWithHue:saturation:brightness:alpha:
方法,我需要更新现有颜色的属性,保持红色。
发布于 2013-03-15 17:12:58
您可以对颜色调用getHue:saturation:brightness:alpha:
,然后调整这些值,然后使用+[UIColor colorWithHue:saturation:brightness:alpha:]
使用调整后的组件创建新颜色
CGFloat hue, saturation, brightness, alpha ;
BOOL ok = [ <color> getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha ] ;
if ( !ok ) {
// handle error
}
// ... adjust components..
UIColor * newColor = [ UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:alpha ] ;
发布于 2016-09-07 02:39:16
下面是你可能会发现有用的swift UIColor
扩展:
extension UIColor {
func modified(withAdditionalHue hue: CGFloat, additionalSaturation: CGFloat, additionalBrightness: CGFloat) -> UIColor {
var currentHue: CGFloat = 0.0
var currentSaturation: CGFloat = 0.0
var currentBrigthness: CGFloat = 0.0
var currentAlpha: CGFloat = 0.0
if self.getHue(¤tHue, saturation: ¤tSaturation, brightness: ¤tBrigthness, alpha: ¤tAlpha){
return UIColor(hue: currentHue + hue,
saturation: currentSaturation + additionalSaturation,
brightness: currentBrigthness + additionalBrightness,
alpha: currentAlpha)
} else {
return self
}
}
}
发布于 2018-08-16 03:23:07
这里还没有提到的一个重要注意事项是,您的UIColor应该在扩展的RGB空间中。根据颜色最初的创建方式,如果只是RGB,此函数可能会返回false。
其次,我在@ambientlight的答案上做了一个变体,使API更流畅一点。可以调整1个或所有属性。
extension UIColor {
public func adjust(hueBy hue: CGFloat = 0, saturationBy saturation: CGFloat = 0, brightnessBy brightness: CGFloat = 0) -> UIColor {
var currentHue: CGFloat = 0.0
var currentSaturation: CGFloat = 0.0
var currentBrigthness: CGFloat = 0.0
var currentAlpha: CGFloat = 0.0
if getHue(¤tHue, saturation: ¤tSaturation, brightness: ¤tBrigthness, alpha: ¤tAlpha) {
return UIColor(hue: currentHue + hue,
saturation: currentSaturation + saturation,
brightness: currentBrigthness + brightness,
alpha: currentAlpha)
} else {
return self
}
}
}
https://stackoverflow.com/questions/15428422
复制相似问题