iOS WebView 空白

Posted

技术标签:

【中文标题】iOS WebView 空白【英文标题】:iOS WebView blank gap 【发布时间】:2015-04-26 21:46:52 【问题描述】:

我使用 youtube 的标准嵌入网址 (sample) 在我的 ios 8.3 应用程序中嵌入了一个 Youtube 视频,它按预期工作,但看起来很奇怪。那个白色间隙(视图树检查器上的蓝色区域)不应该存在。

我可以确认这不是 CSS 问题,因为检查器显示它实际上占据了 uiWebView 组件的 100% 宽度和高度。

我对左、上和右边框设置了约束,以使窗口/布局指南相等,所以这也不是问题。似乎一个私有 _UIWebViewScrollView 组件占用了我分配给 UIWebView 的所有高度,并将真实内容(UIWebViewBrowserView)推到所述区域的底部。

我查找了有关滚动视图类的信息,但似乎只有头文件散布在网络上,没有真正的苹果文档,所以如果可能的话,我宁愿不要弄乱那个滚动视图。

看来我的预感是对的,另一个question also regarding a scrollview 上的某个人描述了同样的问题,但提到的解决问题的功能要么不再存在,要么现在是私有的。我还在寻找答案。

【问题讨论】:

你给webview一个固定的高度吗? 我对 iOS 开发很陌生,但故事板 UIWebView 的高度为 270 像素。以防万一这里是 UIWebView imgur.com/enz84l8,OMh3Qsf 的布局属性的屏幕截图 不用担心。 :) 单击 top space to: top layout guide 旁边的编辑按钮并将常量设置为 0。 已经设置为 0 :( 【参考方案1】:

我修好了。

  override func viewWillLayoutSubviews() 
    super.viewWillLayoutSubviews();

    playerWebView.scrollView.contentInset = UIEdgeInsetsZero;
  

添加到我对问题所做的编辑中,我忘记了快速更改集和获取访问器变量的方法,就像在 C# 中一样。

【讨论】:

在 Swift 3.0 中它现在是 playerWebView.scrollView.contentInset = UIEdgeInsets.zero【参考方案2】:

Swift 3:移除 UIWebView 中的默认空白顶部空间

override func viewWillLayoutSubviews() 
    super.viewWillLayoutSubviews();

    webView.scrollView.contentInset = UIEdgeInsets.zero;

【讨论】:

【参考方案3】:

接受的解决方案对我不起作用。相反,这只是因为我没有使用导航栏标题文本的空间。我通过添加displayMode: .inline 摆脱了它。

    var body: some View 
        VStack 
            WebView(request: URLRequest(url: URL(string: url!)!))
        .navigationBarTitle(Text("Title"), displayMode: .inline)
    

【讨论】:

【参考方案4】:

Swift 3 更新

webViewResetPassw.scrollView.contentInset = UIEdgeInsets.zero

【讨论】:

以上是关于iOS WebView 空白的主要内容,如果未能解决你的问题,请参考以下文章

iOS webview 在 HTML 内容之前留下空白空间

构造 2,使用 Ejecta 和 iOS8 webview 导出 iOS 导致空白屏幕

求助,react native webview 点击链接进入页面显示空白,IOS

WebView加载https的空白及图片加载不了的问题

立即打开 iOS WebView 的 Web Inspector

如何辨别webview页面