iOS如何计算工具栏渐变?

时间:2012-05-24 22:21:33

标签: ios background toolbar gradient

iOS如何计算工具栏渐变?我希望能够设置窗口的背景颜色以匹配渐变中的最终颜色,以使其看起来淡入视图。问题是最终色调似乎根据基色而变化,我找不到产生匹配的一致公式。

1 个答案:

答案 0 :(得分:2)

我最近似的:

(r', g', b') = (f(r), f(g), f(b)) where f(x) = 0.001468x^2 + 0.647295x + 4.04025

我是如何得出的: 让c = (r, g, b) = base color。 让c' = (r', g', b') = resulting color。 我让c = #944321 = (148, 67, 33)获得c' = #84361b = (132, 54, 27)

这给了我三个方程式来解决:

f(148) = 132
f(67) = 54
f(33) = 27

由于我们有三个方程,所以让f(x)是一个有三个未知数的多项式:

f(x) = Ax^2 + Bx + C

从那里我在我的计算器上制作了一个3x4矩阵,输入了x的不同值,并在矩阵上执行了一个缩减行梯形,解决方案为(0.001468, 0.647295, 4.04025)。我将这些插入到A,B和C中并获得前面提到的f(x)

这是一个快速的Python脚本来执行计算。

用法:./script.py rrggbb

#!/usr/bin/env python

import sys

def end_color(color):
    def f(x):
        return int(round(0.001468 * x ** 2 + 0.647295 * x + 4.04025))
    rgb = (int(color[i:i+2], 16) for i in xrange(0, 6, 2))
    return ''.join(hex(f(n))[2:] for n in rgb)

for color in sys.argv[1:]:
    print end_color(color)

我使用颜色#9e3393对其进行了测试,得到了#8f2983,同样颜色的iOS产生了:

$ ./script.py 9e3393
8f2983

即使它不准确,有时也可能无法分辨,因为你在渐变结束时使用了颜色。希望有所帮助!