在UIWebView或UITextView中反转颜色

时间:2011-09-13 19:52:23

标签: iphone ios colors uiwebview

我想知道是否有人知道是否有一种简单的方法来反转UIWebView或UITextView的颜色。我知道可以在你的iPhone上全部反转,但我不希望用户必须这样做,他们应该只需点击一下应用程序,反转颜色,这样如果它是一个弱光情况,阅读对于用户周围的人来说,某些事情会更容易,更少侵入。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

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

请参阅UITextViewsUIWebViews的iOS文档。

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

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

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

答案 1 :(得分: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 :(得分:0)

要获取任何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];

答案 3 :(得分:0)

我最终只在我的服务器上制作了两个单独的文件。一个是倒置的,一个是常规的。在核心图形中似乎没有任何东西,至少我能找到的很容易做到这一点,说实话,HTML或CSS绝对不是我的优点。如果有人对此有一个更简单的解决方案,我对一个好主意更感兴趣。