看来,使用sizeToFit()
上的UIWebView
不会将大小更改为更小,仅更大。这是一些设置代码: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秒后非常大,然后非常小的另外的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)
结束打印报表,但他们输出的尺寸越来越大,而不是下降。换句话说,它会增长,但是一旦加载,它的大小就不会减小。
(800.0, 1.0) // "Test" (before sizeToFit() called)
(800.0, 1976.0) // "Test Test .... Test "
(800.0, 1976.0) // "Test"
在这个时候做对的要求,是的,我需要嵌入它。我有一个非常大的头(UIView)与它下面的webView。在小型设备上,用户在webView上查看信息的唯一方法是将标题和webView嵌入到同一个scrollView中。 –
但是,这确实让我发现了这个问题。问题在于,我使用的是webView.frame.size.height = 0.0,由于某种原因,它不允许webView将尺寸调小。如果我使用1.0(或者我假设0.0以外的任何东西),它可以正常工作! :)如果你想编辑你的答案或提交第二个信息,我会接受它 –
但是你只需要使用'webView.frame.size.height = 1.0'并且你的问题解决了? –