似乎sizeToFit()
在 a上使用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 秒后将内容的大小更改为 VERY LARGE,然后在 3 秒后更改为 VERY SMALL:
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)
但它们输出的大小在增长,但没有减少。换句话说,它会增长,但一旦"Test"
加载,它的大小并不会减小。
(800.0, 1.0) // "Test" (before sizeToFit() called)
(800.0, 1976.0) // "Test Test .... Test "
(800.0, 1976.0) // "Test"