ios – 使用自动布局将UIWebView作为其内容的高度

ios – 使用自动布局将UIWebView作为其内容的高度,第1张

概述我已经在一个滚动视图中嵌入了一个网页视图,我希望网页视图被“扩展”,以显示所有的内容,然后我想滚动浏览滚动视图. 我使用滚动视图作为超级视图的原因,而不仅仅是将网页视图用作滚动视图是因为我在滚动过程中要包含在Web视图上方的标签(请参阅屏幕截图). 那么如何使webview自动调整大小,因此它占用了显示其包含的内容所需的所有空间. 之后,如何使超级视图(滚动视图)根据网络视图的大小自行调整大小? 我已经在一个滚动视图中嵌入了一个网页视图,我希望网页视图被“扩展”,以显示所有的内容,然后我想滚动浏览滚动视图.

我使用滚动视图作为超级视图的原因,而不仅仅是将网页视图用作滚动视图是因为我在滚动过程中要包含在Web视图上方的标签(请参阅屏幕截图).

那么如何使webvIEw自动调整大小,因此它占用了显示其包含的内容所需的所有空间.

之后,如何使超级视图(滚动视图)根据网络视图的大小自行调整大小?

解决方法 要做这项工作,您必须执行以下步骤:

>将UIWebVIEw从nib连接到视图控制器中的插座
>禁用在Web视图中滚动
>在UIScrollVIEw上设置约束,UIVIEw在Web视图的顶部(在我的示例中,我省略了该视图中的所有标签)和UIWebVIEw.
>将UIWebVIEw的高度约束连接到视图控制器中的插座.
>将视图控制器设置为uiwebviewdelegate
>在webVIEwDIDFinishLoad中,将height约束的常量设置为Web视图中滚动视图的contentSize的高度.
>开始键值观察contentSize以更改高度,当网页视图的高度必须更改时,因为网页的各个部分在不重新加载页面的情况下更改其大小(如分页符或菜单).

我不会详细解释这些限制,因为你似乎已经把自己弄清楚了.这是一个限制的截图:

所以,这里是代码:

import UIKitvar MyObservationContext = 0class VIEwController: UIVIEwController {    @IBOutlet weak var webvIEw: UIWebVIEw!    @IBOutlet weak var webvIEwHeightConstraint: NSLayoutConstraint!    var observing = false    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        webvIEw.scrollVIEw.scrollEnabled = false        webvIEw.delegate = self        webvIEw.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.Google.de/intl/de/policIEs/terms/regional.HTML")!))    }    deinit {        stopObservingHeight()    }    func startObservingHeight() {        let options = NSkeyvalueObservingOptions([.New])        webvIEw.scrollVIEw.addobserver(self,forKeyPath: "contentSize",options: options,context: &MyObservationContext)        observing = true;    }    func stopObservingHeight() {        webvIEw.scrollVIEw.removeObserver(self,context: &MyObservationContext)        observing = false    }    overrIDe func observeValueForKeyPath(keyPath: String?,ofObject object: AnyObject?,change: [String : AnyObject]?,context: UnsafeMutablePointer<VoID>) {        guard let keyPath = keyPath else {            super.observeValueForKeyPath(nil,ofObject: object,change: change,context: context)            return        }        switch (keyPath,context) {        case("contentSize",&MyObservationContext):            webvIEwHeightConstraint.constant = webvIEw.scrollVIEw.contentSize.height        default:            super.observeValueForKeyPath(keyPath,context: context)        }    }}extension VIEwController: uiwebviewdelegate {    func webVIEwDIDFinishLoad(webVIEw: UIWebVIEw) {        print(webVIEw.request?.URL)        webvIEwHeightConstraint.constant = webvIEw.scrollVIEw.contentSize.height        if (!observing) {            startObservingHeight()        }    }}
总结

以上是内存溢出为你收集整理的ios – 使用自动布局将UIWebView作为其内容的高度全部内容,希望文章能够帮你解决ios – 使用自动布局将UIWebView作为其内容的高度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存