WKWebView 中的奇怪边距
Posted
技术标签:
【中文标题】WKWebView 中的奇怪边距【英文标题】:Strange Margin in WKWebView 【发布时间】:2016-01-25 00:01:34 【问题描述】:我有一个带有几个 UIView(使用 Interface Builder 构建)的 UIViewController,其中包括我想用作 WKWebView 的一个。我已经能够创建 WKWebView 并将其作为子视图加载到这些 UIView 之一——但是当我加载 URL 时,我在顶部和左侧得到了这个奇怪的填充。我在使用 UIWebView 时遇到了同样的问题,但能够使用
解决它self.automaticallyAdjustsScrollViewInsets = false;
但是,这似乎对动态加载的 WKWebView 没有任何帮助。
从网络加载页面时,我也得到相同的填充,所以我知道它不在我的本地 html 中。
编辑:我开始怀疑容器 UIView 中的自动布局是否会导致这种情况......
以下是相关代码:
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 颜色是深灰色——您还会注意到,即使我将 WebView 的框架设置为与 UIView 容器相同,html 似乎也超出了 UIView:
【问题讨论】:
我自己在 webview 中加载了 html 源代码。添加样式标签并将边距设置为零对我有用。 【参考方案1】:这是因为WKWebView
使用适当的contentInset
为导航栏保留了空间。但是,由于您的 WKWebView 是子视图,因此不再需要进行此调整。
self.webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
在viewDidLoad
方法之后执行此操作很重要。例如在didFinishedNavigation
中的WKNavigationDelegate
【讨论】:
有趣的是,在 Swift 中这写起来更可爱:webView.scrollView.contentInset = .zero
Objective-C 等价物是:webView.scrollView.contentInset = UIEdgeInsetsZero
【参考方案2】:
self.automaticallyAdjustsScrollViewInsets = NO;
if (@available(ios 11.0, *))
self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
【讨论】:
您好,您的回答可能是正确的,但请尝试在您的代码中添加一些解释:) 语言错误。 在 Swift 5 中,以下内容就足够了:webView.scrollView.contentInsetAdjustmentBehavior = .never
这个答案是正确的!以上是关于WKWebView 中的奇怪边距的主要内容,如果未能解决你的问题,请参考以下文章
如果之前已加载某些网页,WKWebView 不会加载 .archive 文件