swift – UIWebView动态内容大小

前端之家收集整理的这篇文章主要介绍了swift – UIWebView动态内容大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在环顾四周,并没有能够看到任何快速相关的方法来做到这一点.我试图让我的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
}

猜你在找的Swift相关文章