我有以下代码:
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,它将保持为我视图的高度。我究竟做错了什么?
答案 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添加为子视图的任何位置,但我假设您是