【问题标题】:Invert colors in UIWebView or UITextView在 UIWebView 或 UITextView 中反转颜色
【发布时间】:2011-11-16 11:35:21
【问题描述】:

我想知道是否有人知道是否有一种简单的方法可以反转 UIWebView 或 UITextView 的颜色。我知道可以在您的 iPhone 上反转所有内容,但我不希望用户必须这样做,他们应该能够在应用程序中一键单击,反转颜色,以便在光线不足的情况下阅读对用户周围的人来说,一些事情会更容易和更少干扰。

感谢您的帮助!

【问题讨论】:

    标签: iphone ios colors uiwebview


    【解决方案1】:

    这是我通过注入 javascript(过去)在 UIWebView 中反转颜色的一种方法。

    首先...

    #define invertJS @"function load_script(src,callback){var s=document.createElement('script');s.src=src;s.onload=callback;document.getElementsByTagName('head')[0].appendChild(s);}function invertColors(){var colorProperties=['color','background-color'];$('*').each(function(){var color=null;for(var prop in colorProperties){prop=colorProperties[prop];if(!$(this).css(prop))continue;color=new RGBColor($(this).css(prop));if(color.ok){$(this).css(prop,'rgb('+(255-color.r)+','+(255-color.g)+','+(255-color.b)+')');}color=null;}});}load_script('http://www.phpied.com/files/rgbcolor/rgbcolor.js',function(){if(!window.jQuery)load_script('https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js',invertColors);else invertColors();})"
    

    然后当你的 webview 完成加载时

    - (void)webViewDidFinishLoad:(UIWebView *)webview{
    [webview stringByEvaluatingJavaScriptFromString:invertJS];}
    

    【讨论】:

      【解决方案2】:

      对于 UITextView,您可以设置文本颜色和背景颜色属性,我知道从那里您可以设置一个按钮来在白色背景/黑色文本和黑色背景/白色文本之间切换。不幸的是,我没有看到 UIWebView 的任何类似属性。

      请参阅 iOS 文档以了解 UITextViews 和 UIWebViews。

      此外,在将颜色传递给这些属性时,您可以使用十六进制值而不是 Apple 的预设颜色。通过这种方式,您可以调用属性的十六进制值,使用任意数量的公式将其反转,然后将新的十六进制值传递回属性。

      反转十六进制颜色,简单地说:

      // maximum hex value is FFFFFF, so
      newHex = FFFFFF - oldHex;
      

      【讨论】:

        【解决方案3】:

        要获取任何UIColor 的 ARGB 分量,您可以使用此答案中提供的代码:

        Extracting rgb from UIColor

        然后,您可以通过从 1.0 中减去 r、g 和 b 分量(但不是 a)来“反转”颜色(某种程度),然后使用这些修改后的分量来产生新的颜色,如下所示:

        r = 1.0 - r;
        g = 1.0 - g;
        b = 1.0 - b;
        UIColor newColor = [UIColor colorWithRed:r green:g blue:b alpha:1.0];
        

        【讨论】:

          【解决方案4】:

          我最终只是在我的服务器上制作了两个单独的文件。一种是倒置的,一种是规则的。至少在核心图形中似乎没有任何东西可以轻松做到这一点,老实说 HTML 或 CSS 绝对不是我的强项。不过,如果有人对此有更简单的解决方案,我对一个好主意非常感兴趣。

          【讨论】:

            猜你喜欢
            • 2013-12-24
            • 2012-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-27
            • 2012-02-16
            相关资源
            最近更新 更多