【发布时间】:2016-06-15 21:29:21
【问题描述】:
似乎在UIWebView 上使用sizeToFit() 不会将大小更改为更小,只会更大。这是一些设置代码:
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"
【问题讨论】:
标签: ios swift uiwebview size sizetofit