簡體   English   中英

iOS:在didFinishLoad之后調整UIWebView(內容應該適合而不滾動)

[英]iOS: Resize UIWebView after didFinishLoad (content should fit without scrolling)

我絕對無法調整UIWebView大小。

我的UIWebView在.h中聲明並在IB中連接。 IB中的高度是110.但是我的文本高度約為1500.現在我想改變高度,以便在不滾動的情況下讀取全文。

什么代碼在webViewDidFinishLoad中調整我的UIWebViewwebViewDidFinishLoad 找不到任何有效的東西。

從iOS 5開始, UIScrollView屬性可用於UIWebView 。您可以通過在委托中實現webViewDidFinishLoad:消息來使用它來調整視圖大小,如下所示:

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect newBounds = webView.bounds;
    newBounds.size.height = webView.scrollView.contentSize.height;
    webView.bounds = newBounds;
}

你試過了嗎? 這個答案

[編輯]

有些人說這是有效的:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

// Change the height dynamically of the UIWebView to match the html content
CGRect webViewFrame = webView.frame;
webViewFrame.size.height = 1;
webView.frame = webViewFrame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
webViewFrame.size = fittingSize;
// webViewFrame.size.width = 276; Making sure that the webView doesn't get wider than 276 px
webView.frame = webViewFrame;

float webViewHeight = webView.frame.size.height;
}

這是我未經測試的,但70人投票給這個答案,並建議設置sizeTahtFits:CGSizeZero就像重置你的frame.size

有些人用JavaScript來解決這個問題:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *string = [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"body\").offsetHeight;"];
CGFloat height = [string floatValue] + 8;
CGRect frame = [_webView frame];
frame.size.height = height;
[_webView setFrame:frame];

if ([[self delegate] respondsToSelector:@selector(webViewController:webViewDidResize:)])
{
    [[self delegate] webViewController:self webViewDidResize:frame.size];
}
}

正如上面的約翰和埃里克所回答的那樣,這段代碼可行。

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect newBounds = webView.bounds;
    newBounds.size.height = webView.scrollView.contentSize.height;
    webView.bounds = newBounds;
}

然而,當嘗試使用此代碼時,我發現它返回了一個正確的webview但不正確的來源,如果是這樣的情況,只需使用此代碼重置

webView.frame=CGRectMake(webView.frame.origin.x, webView.center.y, webView.frame.size.width, webView.frame.size.height);

設置y軸,您可以根據需要獲得webView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM