Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 颜色计算:增加alpha,但在白色背景上保持相同的颜色外观_Ios_Css_Math_Colors_Uicolor - Fatal编程技术网

Ios 颜色计算:增加alpha,但在白色背景上保持相同的颜色外观

Ios 颜色计算:增加alpha,但在白色背景上保持相同的颜色外观,ios,css,math,colors,uicolor,Ios,Css,Math,Colors,Uicolor,一般问题: 如何计算颜色的RGB值,使其在更改alpha分量时在白色背景上保持不变 附加问题: 如何使用非白色背景色执行相同操作 注意事项: 我知道,这不可能适用于所有颜色。例如,不能增加rgba(1,0,0,1)的第一个参数来补偿像rgba(1.1,0,0.9)那样的alpha 这对于单色颜色来说是微不足道的,如本例中所示: 我当前的用例: 我正在开发一款iOS应用程序,它有一个略微透明的状态栏/导航栏。该条应与内容视图中的某些(不透明)对象具有相同的颜色。如果我将相同的颜色应用于条形图,但

一般问题:

如何计算颜色的RGB值,使其在更改alpha分量时在白色背景上保持不变

附加问题:

如何使用非白色背景色执行相同操作

注意事项:

  • 我知道,这不可能适用于所有颜色。例如,不能增加rgba(1,0,0,1)的第一个参数来补偿像rgba(1.1,0,0.9)那样的alpha

  • 这对于单色颜色来说是微不足道的,如本例中所示:

  • 我当前的用例:

    我正在开发一款iOS应用程序,它有一个略微透明的状态栏/导航栏。该条应与内容视图中的某些(不透明)对象具有相同的颜色。如果我将相同的颜色应用于条形图,但内容的alpha为95%,则条形图当然会显得更亮。

    我还需要一个类似web应用的css解决方案。

    使用
    [uicolorWithred:191.0/255.0绿色:127.0/255.0蓝色:127.0/255.0 alpha:1.0]

    如果希望不透明度值为90%,请将alpha设置为0.9


    编辑:您无法使用不透明度获得另一种颜色的确切颜色,相反,最好使用纯色RGB并添加不透明度值。

    与其设置.95 alpha颜色来模拟不透明颜色,不如尝试反向操作,并使用透明视图作为指导设置不透明颜色

    通过这种方式,您可以使用CG图像上下文组合两个视图--其中一个在.95 alpha背景色下有纯白背景色--然后获取生成视图的像素颜色,然后可以将其设置为不透明视图的颜色


    关于如何获得像素的颜色,这里有一个很好的答案:

    好的,我有一个解决我的用例的方法,我想与大家分享

    然而,这并不是我最初问题的答案,这个问题是关于调整颜色所需的数学计算。
    我仍然对“真实”的答案很感兴趣

    无论如何,我的解决方案是:
    我正在将所有viewController视图的背景色属性设置为不带alpha的原始颜色。我使用的是patternImageColor,尺寸为1x2048 px,其顶部64个像素为原始条形图颜色,其余为表格背景色。
    原始条颜色通过半透明条颜色发光,从而再次显示为原始颜色。滚动“在”条之间的内容背景仍会在条中闪烁

    所以我知道这个问题现在已经有将近一年的历史了,但我也遇到了同样的问题并找到了解决方案,所以我想与大家分享一下。这个术语是“alpha合成”,维基百科上有一篇很好的文章

    在您的情况下,您正在使用完全不透明的白色rgba(255255,1)合成颜色

    我做了一个excel计算器来做这个。我不知道如何将单元格值本身放入StackOverflow,所以这里是forumulas的屏幕截图。橙色单元格用于输入

    然后可以更改A10-A13以定义初始颜色,更改D10以指定所需的alpha

    Combined known colors           
        Color 1 Color 2 Combined
    A   0.15    1   =$B$3+$C$3*(1-$B$3)
    R   255 255 =(1/($D$3))*(B4*$B$3+C4*$C$3*(1-$B$3))
    G   0   255 =(1/($D$3))*(B5*$B$3+C5*$C$3*(1-$B$3))
    B   0   255 =(1/($D$3))*(B6*$B$3+C6*$C$3*(1-$B$3))
    
    1 Known Color, Known result Alpha           
        Color 1 Color 2 Combined
    A   0.15    =(D10-B10)/(1-B10)  0.85
    R   255 255 =(1/($D$10))*(B11*$B$10+C11*$C$10*(1-$B$10))
    G   255 255 =(1/($D$10))*(B12*$B$10+C12*$C$10*(1-$B$10))
    B   0   255 =(1/($D$10))*(B13*$B$10+C13*$C$10*(1-$B$10))
    

    我不认为这是在回答问题。在我的情况下,“指南”的颜色来自客户提供的图像,所以我不能按照你的建议去做。然而,对于其他用例,这可能是一种可行的方法。我还希望有人能提供一些有关这方面的数学知识。