看来,在sizeToFit()上使用UIWebView并不会将大小更改为更小,而只是更大。这是一些设置代码:
var scrollView: UIScrollView!
var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
scrollView = UIScrollView()
scrollView.frame = CGRect(x: 50.0, y: 50.0, width: 800.0, height: 1200.0)
webView = UIWebView()
webView.frame = CGRect(x: 50.0, y: 50.0, width: 800.0, height: 1.0)
webView.scrollView.scrollEnabled = false
webView.delegate = self
webView.scalesPageToFit = false
webView.loadHTMLString("Test", baseURL: nil)
self.view.addSubview(scrollView)
scrollView.addSubview(webView)
}这是我的测试代码。它将内容的大小在3秒后更改为非常大,然后在另一个3秒之后更改为非常小:
dispatch_after_delay_main(3) {
self.webView.loadHTMLString("Test Test Test Test ", baseURL: nil)
// Much longer string abbreviated here
dispatch_after_delay_main(3, block: {
self.webView.loadHTMLString("Test", baseURL: nil)
})
}这是在加载HTML之后调用的。目标是根据webView内容的大小更改其大小。注意:我是在同样大小的结果的.sizeToFit()和sizeThatFits()中这样做的。
func webViewDidFinishLoad(webView: UIWebView) {
webView.frame.size.height = 0.0 // Just in case
webView.sizeToFit()
}我省略了webViewDidFinishLoad(webView: UIWebView)末尾的print语句,但是它们输出的大小在增加,但没有减少。换句话说,它会增长,但是一旦加载了"Test",它的大小就不会减少。
(800.0, 1.0) // "Test" (before sizeToFit() called)
(800.0, 1976.0) // "Test Test .... Test "
(800.0, 1976.0) // "Test"发布于 2016-06-15 22:30:24
您需要嵌入在scrollView上的you视图吗?我不这么认为。
尝试将HTML更改为"<div id='main-html'>Your text</div>",然后在webViewDidFinishLoad委托函数上执行以下操作:
首先,通过以下方法获得内容高度:
var result : Float = NSString (webView.stringByEvaluatingJavaScriptFromString("document.getElementById('main-html').offsetHeight").floatValue
其次,用结果值更改webview高度。
并尝试使用相同的结果值更改webView.scrollView.contentSize的高度。
最后,使用webView.sizeToFit()
干杯
编辑:
正如你所说,你可以使用:
func webViewDidFinishLoad(webView: UIWebView) {
webView.frame.size.height = 1.0 // Value needs to be > 0.0 and < of the current height
webView.sizeToFit()
}https://stackoverflow.com/questions/37846103
复制相似问题