【问题标题】:How does iOS calculate a toolbar gradient?iOS 如何计算工具栏渐变?
【发布时间】:2012-05-24 22:21:33
【问题描述】:

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

【问题讨论】:

    标签: ios background toolbar gradient


    【解决方案1】:

    我的最佳近似值:

    (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
    

    即使有时不准确,也可能无法分辨,因为您使用的是渐变末尾的颜色。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多