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

Luc*_*lis 2 constraints webview ios swift

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

我希望这个webView能够无缝集成到屏幕中,而不必强迫用户滚动其内容.

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

如何根据动态内容动态更新webView高度约束?

Vis*_*kar 6

是的,你可以这样做.在storyboard中为您的Web视图设置高度约束,然后在webviewDidFinishLoad中执行以下操作

webView.scrollView.scrollEnabled=false;
heightConstraint.constant = webView.scrollView.contentSize.height
Run Code Online (Sandbox Code Playgroud)

heightConstraintWeb视图的高度约束的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)
    }
}
Run Code Online (Sandbox Code Playgroud)