Invertir colors en UIWebView o UITextView

Me preguntaba si alguien sabía si había una manera fácil de invertir los colors de un UIWebView o UITextView. Sé que es posible invertir todo en su iPhone, pero no quiero que el usuario tenga que hacerlo, deberían poder hacer clic con la aplicación, invertir los colors para que, si se trata de una situación de poca luz, la lectura algo será más fácil y less intrusivo para las personas de todo el usuario.

¡Gracias por cualquier ayuda!

Aquí hay una forma en que he invertido los colors en una UIWebView (en el pasado) inyectando javascript.

Primero…

#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();})" 

Y luego cuando tu webview termina de cargar

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

Para un UITextView puede configurar los attributes de color de background y de text, sé desde allí que puede configurar un button para cambiar entre el text en blanco / negro y el text en blanco / negro. Desafortunadamente, no veo ningún atributo similar para UIWebView.

Consulte la documentation de iOS para UITextViews y UIWebViews .

Además, al pasar los colors a estos attributes, puede usar valores Hex en lugar de los colors pnetworkingefinidos de Apple. De esta forma, puede llamar al valor hexadecimal del atributo, invertirlo con cualquier cantidad de fórmulas y devolver el nuevo valor hexadecimal al atributo.

Invirtiendo un color Hex, simplemente diga:

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

Para get los componentes ARGB de cualquier UIColor , puede usar el código provisto en esta respuesta:

Extraer rgb de UIColor

A continuación, puede "invertir" los colors (tipo de) restando los componentes r, g yb (pero no el a) de 1.0, y luego usando estos componentes modificados para producir un nuevo color, como sigue:

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

Terminé de hacer dos files separados en mi server. Una que está invertida y otra que es regular. No parece haber nada en los charts centrales, al less, que podría encontrar que fácilmente haría esto y, para ser honesto, HTML o CSS definitivamente no son mis puntos fuertes. Sin embargo, si alguien tiene una solución más simple para esto, estoy más que interesado en una buena idea.