2010-05-21 121 views
6

我需要調整UIWebView的高度和寬度,以便整個文本顯示在視圖中,用戶無需滾動即可閱讀文本。設置UIWebView的寬度和高度

有沒有人有任何想法如何得到它?

回答

1

UIWebView沒有特別的規定來調整大小以適應內容。您可以將scalesPageToFit屬性設置爲YES以縮小內容,或者可以使視圖足夠大以適應大小合理的頁面。我從你的問題推斷你正在顯示你所控制的內容。如果不是,我不確定有一個簡單的編程方式來實現你想要的。

+0

Thaks一噸的答案! 是的,試圖將scalesPageToFit屬性設置爲YES ....但它縮小了內容太多並且不可讀... – aditya 2010-05-21 04:41:12

+0

看起來像上面建議的UIWebView + SFHFStringMetrics類別可能很有用。它在呈現的文檔上調用一些Javascript來確定它的尺寸。 – warrenm 2010-05-21 04:49:12

8
webView.scalesPageToFit = YES; 

參見:UIWebView+SFHFStringMetrics

+0

我正在使用UIWebView + SFHFStringMetrics,但獲取大小(0.00,0.00)可以指導我我犯了什麼錯誤? – 2012-03-22 11:50:26

4

希望這將指向你在正確的方向。

通過調用UIWebView上的stringByEvaluatingJavaScriptFromString:方法,您可以在您的應用程序中執行JavaScript代碼UIWebView

// get the height of your content 
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementById('id_of_content_container').offsetHeight;"]; 

// get the width of your content 
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementById('id_of_content_container').offsetHeight;"]; 

上面將返回一個NSString對象與您傳遞到getElementById功能的任何元件的寬度和高度。有了這些信息,您應該可以調整UIWebView的大小以適應您的內容。舉個例子:

CGRect frame = webView.frame; 
frame.size.width = 100; 
webView.frame = frame; 

您可能還需要再次復位scalesPageToFit獲取內容重新適應新的幀大小。

另一種選擇是在HTML端檢測window.heightwindow.width並使用JavaScript調整內容以適應UIWebView的各個方面。

+1

這個想法並不是要改變UIWebView的框架......假設UIWebView的寬度和高度分別設置爲320和440 ......現在想法是適合顯示在320x440視圖中的html內容...... 。 有什麼建議麼??? – aditya 2010-05-21 05:25:53

+0

就像答案指出的那樣,我認爲你不會在應用程序方面做到這一點。您需要在HTML端編寫一些確定窗口寬度/高度的JavaScript,並將其與內容容器的寬度/高度進行比較,然後相應地進行調整。 – Intelekshual 2010-05-21 11:32:52