Инвертировать цвета в UIWebView или UITextView - PullRequest
3 голосов
/ 13 сентября 2011

Мне было интересно, знает ли кто-нибудь, существует ли простой способ инвертировать цвета UIWebView или UITextView.Я знаю, что можно перевернуть все на вашем iPhone, но я не хочу, чтобы пользователи должны были это делать, они должны иметь возможность одним щелчком мыши в приложении инвертировать цвета, чтобы в случае слабой освещенности читатьчто-то будет проще и менее навязчиво для окружающих пользователей.

Спасибо за любую помощь!

Ответы [ 4 ]

1 голос
/ 07 сентября 2012

Вот один способ, которым я инвертировал цвета в UIWebView (в прошлом), внедряя javascript.

Сначала ...

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

А затем, когда ваше веб-представление заканчивает загрузку

- (void)webViewDidFinishLoad:(UIWebView *)webview{
[webview stringByEvaluatingJavaScriptFromString:invertJS];}
1 голос
/ 14 сентября 2011

Для UITextView вы можете установить цвет текста и атрибуты цвета фона, я знаю, что вы можете настроить кнопку для переключения между белым задним / черным текстом и черным задним / белым текстом.К сожалению, я не вижу подобных атрибутов для UIWebView.

См. Документацию по iOS для UITextViews и UIWebViews .

Также при передаче цветов этиматрибуты, вы можете использовать шестнадцатеричные значения вместо предустановленных цветов Apple.Таким образом, вы можете вызвать шестнадцатеричное значение атрибута, инвертировать его с любым количеством формул и передать новое шестнадцатеричное значение обратно в атрибут.

Инвертирование шестнадцатеричного цвета, просто:

// maximum hex value is FFFFFF, so
newHex = FFFFFF - oldHex;
0 голосов
/ 15 сентября 2011

Я просто сделал два отдельных файла на моем сервере.Тот, который перевернут и тот, который является регулярным.Кажется, что в основной графике нет ничего, что я мог бы найти, чтобы легко это сделать, и, честно говоря, HTML или CSS, безусловно, не мои сильные стороны.Тем не менее, если у кого-то есть более простое решение для этого, я более чем заинтересован в хорошей идее.

0 голосов
/ 14 сентября 2011

Чтобы получить компоненты ARGB любого UIColor, вы можете использовать код, указанный в этом ответе:

Извлечение RGB из UIColor

Затем можно «инвертировать» цвета (вроде), вычитая компоненты r, g и b (но не a) из 1.0, а затем используя эти измененные компоненты для получения нового цвета, например:

r = 1.0 - r;
g = 1.0 - g;
b = 1.0 - b;
UIColor newColor = [UIColor colorWithRed:r green:g blue:b alpha:1.0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...