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

标签 ios swift webview constraints

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

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

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

问题

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

最佳答案

是的,你可以做到。在 Storyboard中为您的 Web View 设置高度约束,然后在 webviewDidFinishLoad 中执行以下操作

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

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

更新 您可以为 webview 的 ScrollView 的 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)
    }
}

关于ios - 基于动态内容的webView高度约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329889/

相关文章:

ios - 如何从 UIViewController 打开照片应用程序?

ios - UItableView Cell Resuablity 数据在滚动时被交换

ios - 检测一个 UIView 何时位于另一个 UIView 之上

android - 如何在 WebView 中打开视频播放器?

Android webview 更改链接的高亮颜色

objective-c - UIActionSheet 中途出现

objective-c - 对于 ARC,为什么还要使用 @properties?

ios - 创建图像像素缓冲区时内存泄漏

ios - UIBezierPath Init() 不期望 byRoundingCorners 参数

android - Android 4.4 KitKat 上的 shouldInterceptRequest