【发布时间】:2013-12-30 14:10:45
【问题描述】:
我制作了某种使用 UIWebView 的阅读器。我想包含一个夜间模式功能,它将文本着色为白色和背景黑色,而不是白色背景上的普通黑色文本。
为此,我使用以下代码:
if (nightMode == YES)
{
[self.view setBackgroundColor:[UIColor whiteColor]];
NSString *setJavaScript = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= 'black'; document.getElementsByTagName('html')[0].style.backgroundColor= 'white'; DOMReady();"];
[readerWebView stringByEvaluatingJavaScriptFromString:setJavaScript];
[readerWebView.scrollView setBackgroundColor:[UIColor whiteColor]];
[[NSUserDefaults standardUserDefaults] setBool:(NO) forKey:@"nightMode"];
nightMode = NO;
}
else
{
[self.view setBackgroundColor:[UIColor blackColor]];
NSString *setJavaScript = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= 'white'; document.getElementsByTagName('html')[0].style.backgroundColor= 'black'; DOMReady();"];
[readerWebView stringByEvaluatingJavaScriptFromString:setJavaScript];
//[readerWebView setBackgroundColor:[UIColor blackColor]]; // doesn't solve it
[readerWebView.scrollView setBackgroundColor:[UIColor blackColor]];
[[NSUserDefaults standardUserDefaults] setBool:(YES) forKey:@"nightMode"];
nightMode = YES;
}
[[NSUserDefaults standardUserDefaults] synchronize];
大多数情况下,这项工作都能找到并且我得到了我预期的结果。但有时它看起来像这样:
在 UIWebView 中设置的边距在应该为黑色时保持白色,在应该为白色时保持黑色。这似乎完全随机!特别是因为它不是在整个网页上,而是从向下 1024px 开始(确切地说,是 iPad 屏幕的高度)。
有人知道如何解决这个问题吗?
它在模拟器和真正的 iPad 上都有。
【问题讨论】:
-
你试过调用[readerWebView setNeedsDisplay]吗?
-
没有帮助,很遗憾
-
这是发生在模拟器还是实际设备中?模拟器可能有一个错误......这只是一个猜测
-
模拟器和实际设备上都有...
标签: javascript ios objective-c uiwebview