在iOS上,当您在contentInset
的滚动视图上设置WKWebView
时,似乎会让网页视图认为网页内容比实际大。例如,如果您将一个大部分为空的页面设为顶部或底部contentInset
,即使没有任何内容可以滚动,您也可以向下滚动页面。
这是预期的行为吗?是否有一种解决方法仍允许我使用contentInset
?
答案 0 :(得分:6)
问题是WKWebView
似乎总是使用其框架作为其视口大小,而忽略了减去scrollView的contentInset
。我可以通过workaround找到stephan-leroux。
我们的想法是手动或使用自动布局约束将WKWebView框架设置为所需的视口大小。要恢复"滚动下" contentInset
的效果,请停用scrollView' masksToBounds
:
wkWebview.scrollView.layer.masksToBounds = NO;
答案 1 :(得分:1)
只是想分享一个代码示例:
CGFloat topInset = ...;
web.scrollView.layer.masksToBounds = NO;
[web.scrollView setContentInset:UIEdgeInsetsMake(topInset, 0, 0, 0)];
[web setFrame:CGRectMake(0, 0, web.width, web.height-topInset)];
答案 2 :(得分:0)
四年后,问题仍然存在...
weiyin's answer的效果很好,但是如果您像我一样,可能会想尽办法确切地做些事情(尽管这确实很简单)。
将您的 Web视图嵌入到包装器视图中。
调整大小和位置 Web视图,使其框架从包装器视图精确插入所需的内容。
在 Web视图的滚动视图上设置clipsToBounds = false
(在 Wrapper视图的true
上)。
确保在 Web视图(webview.contentInset = .zero
)上没有设置任何内容插图。
(这是默认设置,通常不需要设置)。