基于动态内容的webView高度约束

webView height constraint based on dynamic content

我在屏幕底部有一个嵌入式 webView,它加载了 Facebook 评论 javascript 插件。

我希望此 webView 无缝集成到屏幕中,而不强制用户滚动其内容。

但是,当用户点击某些 webView 按钮时,UI 高度会发生变化,从而使 webView 可以滚动。

问题

如何根据其动态内容动态更新 webView 高度限制?

是的,你可以做到。在情节提要中为您的网络视图设置高度约束,然后在 webviewDidFinishLoad 中执行以下操作

webView.scrollView.scrollEnabled=false;
heightConstraint.constant = webView.scrollView.contentSize.height

其中heightConstraint是网页视图高度限制的IBOutlet。如果需要,在修改约束后调用 setNeedsLayout()。还要确保将 Web 视图的底部约束设置为等于滚动视图的底部,以便它自由扩展。

更新 您可以为 webview 的滚动视图的 contentSize 添加键值观察器。你可以这样做

var myContext = 0
webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: .New, context: &myContext) 
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    if context == &myContext {
        heightConstraint.constant = webView.scrollView.contentSize.height
        //call layout update if needed
    } else {
        super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
    }
}