使用sizeThatFits:调整UIWebView的大小不起作用

时间:2014-08-26 17:43:17

标签: ios objective-c uiwebview

我有以下代码:

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, kWidth, 1)];
[webView loadHTMLString:[input objectForKey:@"htmlContent"] baseURL:nil];
CGSize size = [webView sizeThatFits:CGSizeMake(kWidth, FLT_MAX)];
webView.frame = CGRectMake(0, 0, kWidth, size.height);
NSLog(@"%@",NSStringFromCGRect(webView.frame));
NSLog(@"%@",NSStringFromCGSize(size));

这个想法取自this回答,并且在使用sizeThatFits之前OP提到了选择的最小尺寸,即1.屏幕上的输出如下:

{{0, 0}, {768, 1}}
{768, 1}

换句话说,高度不会被修改,而我将选择的价值而不是1,它将保持为我视图的高度。我究竟做错了什么?

1 个答案:

答案 0 :(得分:4)

因为loadHTMLString是异步的,所以在加载和呈现实际的html之前,将调用sizeThatFits方法。

我建议的是,实现UIWebViewDelegate协议

webView.delegate = self;

然后

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGSize size = [webView sizeThatFits:CGSizeMake(kWidth, FLT_MAX)];
    webView.frame = CGRectMake(0, 0, kWidth, size.height);
}

注意:我没有在您的代码中看到您将webview添加为子视图的任何位置,但我假设您是