在 WKWebView 上滚动时 UINavigationBar/UIVisualEffectView 的模糊半透明效果?

Posted

技术标签:

【中文标题】在 WKWebView 上滚动时 UINavigationBar/UIVisualEffectView 的模糊半透明效果?【英文标题】:Blurry translucent effect of UINavigationBar/UIVisualEffectView while scrolling on a WKWebView? 【发布时间】:2014-11-14 14:00:38 【问题描述】:

我想实现与 Safari 中相同的效果,其中导航栏的颜色会略有变化,以反映滚动时经过的网页。

过去使用 UIWebView 的 6 年老方法是简单地包含这两行代码:

webView.scrollView.contentInset = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0);
    
webView.scrollView.scrollIndicatorInsets = _webView.scrollView.contentInset;

由于 WKWebView 边缘插图的工作方式与内容偏移非常相似。它最初显示正确,但是当您滚动时,网页会在 UINavigationBar/UIVisualEffectView 下方移动,从而无法到达相应调整的网站的顶部栏,例如 apple.com

还有其他方法吗?

以下答案已有 6 年历史且已过时。

【问题讨论】:

【参考方案1】:

你需要移动导航栏下的web view,然后设置web view的contentInset,像这样:

navBar.frame = CGRectMake(0, 0, self.view.bounds.size.width, 44);
webView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
webView.scrollView.contentInset = UIEdgeInsetsMake(44, 0, 0, 0);
webView.scrollView.scrollIndicatorInsets = webView.scrollView.contentInset;

【讨论】:

我只改变:UIEdgeInsetsMake(-44, 0, 0, 0);谢谢!【参考方案2】:

在 xcode 和状态栏样式中转到您的应用设置,单击下拉菜单并选择“Light”。 这些应该适用于您的所有应用

【讨论】:

以上是关于在 WKWebView 上滚动时 UINavigationBar/UIVisualEffectView 的模糊半透明效果?的主要内容,如果未能解决你的问题,请参考以下文章

在 WKWebView 上禁用双击滚动

滚动出界时 WKWebView 会发生啥

WKWebView+contentInset 使内容大小错误

WKWebView 可水平滚动

如果没有在 Swift 中加载 URL,如何使 WKWebView 不可滚动?

iOS WKWebView findString 不选择和滚动