我製作了一種使用UIWebView的閱讀器。我想包括一個夜間模式功能,它將文本白色和背景黑色,而不是白色背景上的普通黑色文本。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]? –
不好意思,不幸 – Mathijs
這是發生在模擬器還是實際設備?有可能是一個模擬器的錯誤...這只是一個猜測 –