2016-06-15 35 views
0

看來,使用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" 

回答

3

你需要在scrollView上嵌入webview嗎?我想不是。

嘗試將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() 

} 
+0

在這個時候做對的要求,是的,我需要嵌入它。我有一個非常大的頭(UIView)與它下面的webView。在小型設備上,用戶在webView上查看信息的唯一方法是將標題和webView嵌入到同一個scrollView中。 –

+0

但是,這確實讓我發現了這個問題。問題在於,我使用的是webView.frame.size.height = 0.0,由於某種原因,它不允許webView將尺寸調小。如果我使用1.0(或者我假設0.0以外的任何東西),它可以正常工作! :)如果你想編輯你的答案或提交第二個信息,我會接受它 –

+0

但是你只需要使用'webView.frame.size.height = 1.0'並且你的問題解決了? –