WKWebView中的奇怪边距

bku*_*ius 11 ios swift

我有一个带有一些UIViews的UIViewController(使用Interface Builder构建),包括一个我想用作WKWebView的UIViewController.我已经能够创建WKWebView并将其作为子视图加载到其中一个UIViews - 但是当我加载URL时,我在顶部和左侧得到这个奇怪的填充.当我使用UIWebView但是能够使用它来解决它时,我遇到了同样的问题

self.automaticallyAdjustsScrollViewInsets = false;
Run Code Online (Sandbox Code Playgroud)

但是,这对于动态加载的WKWebView似乎没有任何帮助.

从网上加载页面时我也得到相同的填充,所以我知道它不在我的本地html中.

编辑:我开始怀疑容器UIView中的autolayout是否导致了这个...

这是相关代码:

    var webView:WKWebView!
@IBOutlet var containerView : UIView?
@IBOutlet weak var webContainer: UIView!

override func loadView() {
    super.loadView()
    self.webView = WKWebView()
    if(self.webView != nil){
        self.containerView = self.webView!
        self.containerView!.frame = self.webContainer.frame
        self.webContainer.addSubview(self.containerView!)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    let bundle = NSBundle.mainBundle()
    let url = bundle.URLForResource("index", withExtension: "html")
    let request = NSURLRequest(URL: url!)
    webView.loadRequest(request)
}
Run Code Online (Sandbox Code Playgroud)

这是它的样子.UIView容器的BG颜色是深灰色 - 你还会注意到html似乎超出了UIView,即使我将WebView的框架设置为与UIView容器相同:

在此输入图像描述

Pie*_*one 9

这是因为WKWebView使用适当的方法为导航栏保留了空间contentInset.但是,由于您的WKWebView是子视图,因此不再需要进行此调整.

self.webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

viewDidLoad方法之后执行此操作非常重要.例如,在didFinishedNavigationWKNavigationDelegate

  • 有趣的是,在Swift中,这甚至更可爱:`webView.scrollView.contentInset = .zero` (7认同)
  • Objective-C等价物是:`webView.scrollView.contentInset = UIEdgeInsetsZero` (2认同)

小智 7

self.automaticallyAdjustsScrollViewInsets = NO;
  if (@available(iOS 11.0, *)) {
    self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
  }
Run Code Online (Sandbox Code Playgroud)

  • 在 Swift 5 中,以下内容就足够了:`webView.scrollView.contentInsetAdjustmentBehavior = .never` (3认同)
  • 您好,您的答案可能是正确的,但请尝试在您的代码中添加一些解释:) (2认同)