wkwebview 切换夜间模式的时候会闪白一下怎么办?

本文介绍了在iOS中使用WKWebView时,如何处理夜间模式切换导致的网页背景先闪现白色再变暗的问题。通过调整网页内容颜色修改的时机,以及在网页加载完成后延迟显示,成功避免了闪白现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能要求:使用wkwebview加载网页,,夜间模式下修改网页背景颜色和字体的颜色

遇到的问题:网页在加载完毕,,修改背景颜色的时候会先闪现一下白色背景后变成夜间的颜色


原因:网页的背景色和字体颜色的修改是在网页加载完毕的时候进行的,,所以会先显示原始颜色,再显示修改的颜色


夜间模式的实现方法::

- (void)nightOrDay{

    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"nightOrDay"] isEqualToString:@"1"]) {

        self.view.backgroundColor = viewNightColor;

        // 改变网页内容背景颜色

        [self.newsWebView evaluateJavaScript:@"document.body.style.backgroundColor=\"#28333C\"" completionHandler:nil];

        // 改变网页内容文字颜色

        [self.newsWebView evaluateJavaScript:@"document.body.style.webkitTextFillColor=\"#7E9EB3\"" completionHandler:nil];  

    }else{

        self.view.backgroundColor = [UIColor whiteColor];

    }

}

闪白的解决方法::

#pragma mark 网页开始加载 隐藏网页

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{

    self.newsWebView.hidden = YES;

}

#pragma mark 网页加载完成 延时0.2秒展示网页,,此时夜间模式的颜色已经修改完毕,,不会看到闪白了

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{

    [self nightOrDay];

    /// 延时0.2s 显示网页

    [self performSelector:@selector(showWebView) withObject:self afterDelay:0.2];

}

- (void)showWebView{

    self.newsWebView.hidden = NO;

    [SVProgressHUD dismiss];

}



如果你有更好的方法,,欢迎留言探讨




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值