我有以下代码:
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,它将保持为我的 View 的高度。我到底做错了什么?
最佳答案
因为 loadHTMLString 是异步的,你的 sizeThatFits 方法将在实际的 html 被加载和渲染之前被调用。
我建议的是,实现 UIWebViewDelegate 协议(protocol)
webView.delegate = self;
进而
-(void)webViewDidFinishLoad:(UIWebView *)webView {
CGSize size = [webView sizeThatFits:CGSizeMake(kWidth, FLT_MAX)];
webView.frame = CGRectMake(0, 0, kWidth, size.height);
}
注意:我在您的代码中没有看到您将 webview 添加为 subview 的任何地方,但我假设您是
关于ios - 使用 sizeThatFits : doesn't work 调整 UIWebView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512005/