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

功能要求:使用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];

}



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




你可能感兴趣的:(wkwebview 切换夜间模式的时候会闪白一下怎么办?)