iOS:在didFinishLoad之后调整UIWebView的大小(内容应该不会滚动)

我绝对无法调整我的UIWebView

我的UIWebView在.h中声明,并在IB中连接。 IB中的高度是110,但是我的文本的高度大约是1500.现在我想改变高度,这样全文不需要滚动就可以阅读。

什么代码调整我的UIWebViewwebViewDidFinishLoad ? 找不到任何可行的。

UIScrollView属性可用于从iOS 5开始的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; } 

这是我没有经过testing,但70人投票^这个答案,并build议设置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]; } } 

如上面的john和eric所回答的,这段代码起作用。

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

然而,虽然试着用这个代码,我发现它返回了一个适当的web视图,但不正确的起源,如果这是任何人的情况下,只需重置此代码

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

y轴被设置,你得到的webView,你想要的。