加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – UIWebView动态内容大小

发布时间:2020-12-14 05:45:54 所属栏目:百科 来源:网络整理
导读:我一直在环顾四周,并没有能够看到任何快速相关的方法来做到这一点.我试图让我的UIWebViews高度变得动态.我有一个使用loadHtmlString函数加载数据的UIWebView.事情是我从sqlite数据库加载数据,每次我加载不同长度的不同字符串时自然web视图获得不同的高度. 现
我一直在环顾四周,并没有能够看到任何快速相关的方法来做到这一点.我试图让我的UIWebViews高度变得动态.我有一个使用loadHtmlString函数加载数据的UIWebView.事情是我从sqlite数据库加载数据,每次我加载不同长度的不同字符串时自然web视图获得不同的高度.
现在我需要知道如何使UIWebView具有精确的高度,以便在webView下加载我的下一个内容.这就是我到目前为止所拥有的
var jobSkillView = UIWebView(frame: CGRectMake(-5,480.0,screenWidth,300.0))
jobSkillView.loadHTMLString("<html><body p style='font-family:arial;font-size:16px;'>" + jobSkills + "</body></html>",baseURL: nil)
jobSkillView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML")
jobSkillView.scrollView.scrollEnabled = true
jobSkillView.scrollView.bounces = true
jobSkillView.sizeToFit()
border.addSubview(jobSkillView)

我在SO上找到了这样的东西,但不知道如何将它链接到UIWebView的框架:

func webViewDidFinishLoad(jobSkillView : UIWebView){
    // Change the height dynamically of the UIWebView to match the html content
    var jobSkillViewFrame: CGRect = jobSkillView.frame
    jobSkillViewFrame.size.height = 1
    jobSkillView.frame = jobSkillViewFrame
    var fittingSize: CGSize = (jobSkillView.sizeThatFits(CGSizeZero))
    jobSkillViewFrame.size = fittingSize
    // webViewFrame.size.width = 276; Making sure that the webView doesn't get wider than 276 px
    jobSkillView.frame = jobSkillViewFrame
    var jobSkillViewHeight = jobSkillView.frame.size.height
}
此帖已经更新为Swift 4& WKWebView

所以这是你在那里写的一个非常好的功能,OP!
这是一个更短,更优雅的代码版本:

// make sure to declare the delegate when creating your webView (add UIWebViewDelegate to class declaration as well)
myWebView.delegate = self

func webViewDidFinishLoad(webView: UIWebView) {
     webView.frame.size.height = 1
     webView.frame.size = webView.sizeThatFits(CGSize.zero)
}

迁移到WKWebView

1)导入WebKit
2)使您的ViewController继承自WKNavigationDelegate
3)连接WKWebView的委托:webView.navigationDelegate = self
4)实现以下协议功能:

webView(_ webView: WKWebView,didFinish navigation: WKNavigation!)

从UIWebView迁移到WKWebView后,上述方法似乎不再起作用.
您可以做的是将webView.sizeThatFits(CGSize.zero)更改为:

webView.frame.size = webView.scrollView.contentSize

WKWebView的完整代码将是:

func webView(_ webView: WKWebView,didFinish navigation: WKNavigation!) {
    webView.frame.size.height = 1
    webView.frame.size = webView.scrollView.contentSize
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读