Ios WKWebView+;contentInset使内容大小错误

Ios WKWebView+;contentInset使内容大小错误,ios,webkit,wkwebview,Ios,Webkit,Wkwebview,在iOS上,当您在WKWebView的滚动视图上设置contentInset时,似乎会使web视图认为页面的内容比实际内容大。例如,如果您为一个大部分为空的页面提供顶部或底部的contentInset,则即使没有可滚动的内容,您也可以向下滚动页面 这是预期的行为吗?是否有一种解决方法仍然允许我使用contentInset?问题是WKWebView似乎总是使用其框架作为其视口大小,而忽略了减去滚动视图的contentInset。我找到了一条路 其思想是手动或使用自动布局约束将WKWebView的框

在iOS上,当您在
WKWebView
的滚动视图上设置
contentInset
时,似乎会使web视图认为页面的内容比实际内容大。例如,如果您为一个大部分为空的页面提供顶部或底部的
contentInset
,则即使没有可滚动的内容,您也可以向下滚动页面


这是预期的行为吗?是否有一种解决方法仍然允许我使用
contentInset

问题是
WKWebView
似乎总是使用其框架作为其视口大小,而忽略了减去滚动视图的
contentInset
。我找到了一条路

其思想是手动或使用自动布局约束将WKWebView的框架设置为所需的视口大小。要恢复
contentInset
的“滚动显示”效果,请禁用滚动视图的
masksToBounds

wkWebview.scrollView.layer.masksToBounds = NO;
weiyin的(调整web视图框架的大小)对我很有用

只想分享一个代码示例:

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)];

四年后,这个问题仍然存在

工作很好,但如果你像我一样,你可能会有点费劲弄清楚到底要做什么(尽管这真的很简单)

下面是对傻瓜(比如我)的一个简单解释:
  • 将Web视图嵌入到包装器视图中

  • 调整Web视图的大小和位置,使其框架正好通过所需的内容插入从包装器视图插入

  • 在Web视图的滚动视图上设置
    clipsToBounds=false
    (在包装器视图上设置
    true

  • 确保Web视图上未设置内容插入集(
    webview.contentInset=.zero

    (这是默认设置,通常不需要设置)

  • 完成:
    • 在不使用内容插入的情况下,Web视图上100%的内容插入行为。

    滚动条是。。。向左8点。(@zoltan)你可以一直向后移动它:。