iOS:在didFinishLoad之后调整UIWebView(内容应该适合而不滚动)

时间:2012-12-13 10:53:11

标签: ios xcode uiwebview height

我绝对无法调整UIWebView的大小。

我的UIWebView在.h中声明并在IB中连接。 IB中的高度为110.但是我的文本高度大约为1500.现在我想改变高度,以便在不滚动的情况下读取全文。

UIWebView中调整webViewDidFinishLoad的代码的代码是什么?找不到任何有用的东西。

3 个答案:

答案 0 :(得分:10)

从{5}开始,UIScrollView属性可用于{5}。您可以通过在代理中实施UIWebView消息来使用它来调整视图大小,如下所示:

webViewDidFinishLoad:

答案 1 :(得分:3)

您是否尝试过:this answer

[编辑]

有些人说这是有效的:

- (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];
}
}

答案 2 :(得分:2)

正如上面的约翰和埃里克所回答的那样,这段代码可以运作。

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