我一直在环顾四周,并没有能够看到任何快速相关的方法来做到这一点.我试图让我的UIWebViews高度变得动态.我有一个使用loadHtmlString函数加载数据的UIWebView.事情是我从sqlite数据库加载数据,每次我加载不同长度的不同字符串时自然web视图获得不同的高度.
现在我需要知道如何使UIWebView具有精确的高度,以便在webView下加载我的下一个内容.这就是我到目前为止所拥有的
现在我需要知道如何使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 }