【问题标题】:Strange padding while using UIWebView/WKWebView使用 UIWebView/WKWebView 时出现奇怪的填充
【发布时间】:2015-10-08 22:41:40
【问题描述】:

在模拟器和真实设备上,我在页面的左侧和右侧看到了这个白色填充。我也想删除顶部栏。我在 Main.storyboard 上有 UIWebView/WKWebView:

我尝试将约束值设置为 -20,但它什么也没提供。 代码如下:

 @IBOutlet var webView: WKWebView!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.automaticallyAdjustsScrollViewInsets = false;

        let url = NSURL(string: "https://www.google.ru/");
        var req = NSURLRequest(URL: url!);
        webView.loadRequest(req);

    }

在开始在 google 上进行测试之前,我还尝试将 body { padding: 0; margin: 0; } 添加到我自己的页面中。我检查了 Safari - 它非常适合谷歌图片。 所以我尝试过的一切都对我没有帮助。如何删除 WKWebView 中的左/右白色填充?

【问题讨论】:

  • 看起来你的前导/尾随约束是相对于边距的。让它们与边距无关,看看会发生什么。

标签: ios css uiwebview wkwebview


【解决方案1】:

看起来像开箱即用的 WKWebView 在 body 标签上设置了边距。您可以通过创建 WKWebViewConfiguration 并使用配置(包括边距为 0 的主体样式)添加初始化来删除它。

let config = WKWebViewConfiguration()
let bodyStyle = "body { margin:0; }"
let source = "var node = document.createElement(\"style\"); node.innerHTML = \"\(bodyStyle)\";document.body.appendChild(node);"

let script = WKUserScript(
            source: source,
            injectionTime: .AtDocumentEnd,
            forMainFrameOnly: false
        )

config.userContentController.addUserScript(script)
webView = WKWebView(frame: CGRectZero, configuration: config)

或者快速而肮脏的方法是向您的视图添加内联样式。 (我没试过这种方式)

【讨论】:

  • 我自己在 webview 中加载了 html 源代码。添加样式标签并将边距设置为零对我有用。
  • 这个解决方案也可以通过在 webview 中实现 self.webview.evaluateJavaScript("var node = document.createElement(\"style\"); node.innerHTML = \"body { margin:0; }\";document.body.appendChild(node);", completionHandler: nil) 来完成加载。
猜你喜欢
  • 2011-01-27
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多