ios - 颜色作为 slider 位置的函数,用于设置颜色

标签 ios objective-c uislider uicolor cgcolorspace

我正在尝试创建一个用户可以使用的颜色选择器工具。颜色选择器有一个所有颜色的 slider 和一个额外的 slider 来设置颜色的深浅。两者都显示在图 1 和图 2 中:

图片 1 : 选择颜色:

Image 1

图 2 : 设置颜色有多深

enter image description here

我知道我可以为 slider 使用自定义图像,而不是将每种颜色与一个位置匹配,这意味着我需要创建巨大的数组并且需要做很多工作。设置颜色深浅的​​第二个 slider 仍需要在运行时计算。我怀疑这种方法有什么好处,因此问你是否对如何解决这个问题有更好的想法。也许一个将颜色与 slider 位置联系起来的数学函数,color(x),其中 x 是 slider 的位置,可以解决问题。那么如何根据位置创建颜色并基于此数学函数创建 slider ?

最佳答案

我以前这样做的方式就是使用图像。

您可以根据它的位置渲染每个像素等......但这是非常密集的东西,图像实际上不会改变。

各种应用程序已经内置了色调渐变(Pixelmatr 和 Photoshop 都有)。

只需创建一个色调渐变图像并在色调 slider 后面使用它。

对于亮度 slider ,创建一个透明的黑色渐变图像并将其放在 slider 上。现在您只需设置 slider 颜色,其顶部的渐变将使其看起来正确。

我使用这种技术在我的应用程序中创建了这个颜色选择器......

enter image description here

左侧的“ slider ”使用具有色调渐变的单个图像。

右侧的“亮度/饱和度”选择器使用单个图像,从左到右白色透明渐变,从下到上黑色透明渐变。然后我只需要根据色调设置背景颜色。

示例

iOS 中的所有颜色都使用基于 0.0-1.0 的颜色。

因此,您所需要的只是沿每个 View 的距离的百分比。

所以你的职位是 CGPoint并且需要产生一个百分比。

每种颜色都是“3 维的”(4 带有 alpha,但我没有包括它)所以你需要三个百分比。

在简单的色调 View ...

// put this inside the hue view (if you're not using a UISlider
// this works vertically you ay need yours to work horizontally.
- (CGFloat)hueValueForTouchPosition:(CGPoint)touchPoint {
    return touchPoint.y / CGRectGetHeight(self.frame);
}

这将根据触摸在 View 中的位置返回正确的色调值。

现在您可以使用它来设置亮度 View 的背景颜色。
// this will change the background color of the brightness view to match the selected hue
CGFloat hue = [self.hueView hueValueForTouchPosition:touchPoint];
self.brightnessView.backgroundColor = [UIColor colorWithHue:hue brightness:1.0 saturation:1.0 alpha:1.0];

现在你只需要对亮度做同样的事情

关于ios - 颜色作为 slider 位置的函数,用于设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954319/

相关文章:

ios - MPMusicPlayerController 在 iOS 6 中被弃用

iphone - 自定义 UI slider ,缩略图大小问题

swift - UISlider 使其成为正方形而不是圆形

ios - Storyboard : assign IBOutlet for multiple object per size class

ios - 在 UIView 中切透明孔

iphone - 如何在 Objective-C 中正确访问基类属性?

objective-c - 如何在 Cocoa 中使用指定的 NSString 编码保存文本文档?

ios - CGAffineTransform 旋转并根据 slider 值调整大小

ios - 从上一个 Controller 导航回来时的 ViewController

iphone - 检查 NSData 是否包含 NSString 的可能性