我一直在环顾四周,无法看到任何快速相关的方法来执行此操作。我试图让我的UIWebViews高度是动态的。我有一个UIWebView,它使用loadHtmlString函数加载数据。事实是,每次我加载具有不同长度的不同字符串时,都会从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的框架:
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
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) }
1)导入WebKit 2)使您ViewController继承自WKNavigationDelegate 3)挂接WKWebView的委托:webView.navigationDelegate = self 4)实现以下协议功能:
WebKit
ViewController
WKNavigationDelegate
webView.navigationDelegate = self
webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
从迁移UIWebView到后WKWebView,上述方法似乎不再起作用。 您可以做的是,将行更改webView.sizeThatFits(CGSize.zero)为:
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 }