ios - 使用 sizeThatFits : doesn't work 调整 UIWebView 的大小

标签 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,它将保持为我的 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/

相关文章:

html - 无法阻止初始比例 = 1 的 iPhone 缩放

cocoa-touch - iPad应用程序中的字体问题

ios - 将 UIImage 加载到 WebView Swift 4

ios - 如何在应用程序和它的扩展之间共享一个类?

javascript - 从 UIWebView 引用存储在 NSDocumentDirectory 中的视频

ios - Swift 3.0 中的 NSIndexPath 和 IndexPath

iphone - iOS : formatting decimal numbers

iOS8:在 prepareForSegue 中推送 View Controller 使其闪烁

iphone - 如何在单击Newsong时使avaudioplayer停止播放上一首歌曲?

ios - 加载后快速获取 UIWebView 的正确大小