我环顾四周,没有看到任何快速相关的方法来做到这一点。我试图让我的 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 5 进行了更新 &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
to WKWebView
,上面的方法似乎不再起作用了。
相反,你可以做的是改变线路webView.sizeThatFits(CGSize.zero)
to:
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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)