我有一个带有一些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容器相同:
答案 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;
}