gpt4 book ai didi

javascript - UIWebView 上的夜间模式问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:41 28 4
gpt4 key购买 nike

我制作了某种使用 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];

在大多数情况下,这都能找到并且我得到了预期的结果。但有时它看起来像这样:

screenshot

在 UIWebView 中设置的边距在应该是黑色的时候保持白色,或者在应该是白色的时候保持黑色。这似乎完全是随机的!特别是因为它不在整个网页上,而是从 1024px 开始(确切地说,iPad 屏幕的高度)。

有人知道如何解决这个问题吗?

它既存在于模拟器中,也存在于真实的 iPad 上。

最佳答案

(假设这里是 HTML 内容)。您正在从 UIWebView外部解决这个问题,我认为您需要将反转逻辑注入(inject) web View 。我建议您改为注入(inject)反转内容的 CSS(如描述的那样 here )。对您来说不利的一面是,如果您还不知道 CSS,则必须至少学习其中的一部分,并且反转并不容易。但最终应该会出现更少数量的有问题的边缘案例,这些边缘案例是由于难以控制 WebKit 中的实现细节(在未来版本中更改的风险也很高),可能很难找到。

关于javascript - UIWebView 上的夜间模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20538870/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com