6

我绝对无法调整我的UIWebView.

MyUIWebView在 .h 中声明并在 IB 中连接。IB 中的高度为 110。但我的文本高度约为 1500。现在我想更改高度,以便全文无需滚动即可阅读。

什么代码可以调整我UIWebView的大小webViewDidFinishLoad?找不到任何有用的东西。

4

3 回答 3

11

UIScrollView属性可用于UIWebView从 iOS 5 开始。您可以通过webViewDidFinishLoad:在委托中实现消息来使用它来调整视图大小,如下所示:

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect newBounds = webView.bounds;
    newBounds.size.height = webView.scrollView.contentSize.height;
    webView.bounds = newBounds;
}
于 2012-12-13T20:43:28.810 回答
3

您是否尝试过:这个答案

[编辑]

有人说这是有效的:

- (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];
}
}
于 2012-12-13T11:08:57.280 回答
2

正如上面 john 和 eric 所回答的,这段代码有效。

-(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。

于 2014-03-24T11:15:19.903 回答