WKWebView中的奇怪边距

时间:2016-01-25 00:01:34

标签: ios swift

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

解决它时,我遇到了同样的问题
self.automaticallyAdjustsScrollViewInsets = false;

然而,这对于动态加载的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)
}

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

enter image description here

2 个答案:

答案 0 :(得分:9)

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

self.webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)

viewDidLoad方法之后执行此操作非常重要。例如didFinishedNavigation

中的WKNavigationDelegate

答案 1 :(得分:1)

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