IPhone 中的 UiWebview 根据内容大小调整大小

UiWebview in IPhone resize as per the content size

我遇到了一个问题,比如我在 Iphone 中使用 UIWebView 并且数据来自 HTML 我将 html 数据存储为字符串并传递给UIWebView 运行良好,但我想根据内容大小更改 UIWebView 大小

    - (void)viewDidLoad {
        web.delegate = self; 
        NSString * str = [dict objectForKey:@"terms"];
        [web loadHTMLString:str baseURL:nil];
    }
- (void)webViewDidStartLoad:(UIWebView *)webView
{
        CGRect frame = web.frame;
        frame.size.height = 1;

        CGSize fittingSize = [web sizeThatFits:CGSizeZero];
        frame.size = fittingSize;
        web.frame = frame;

        NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);

     web.frame = CGRectMake(10, 100, web.scrollView.contentSize.width, web.scrollView.contentSize.height);

}

设置你的web view delegateframe

 yourwebview.frame=[[UIScreen mainScreen] bounds]; 
 yourwebview.delegate = self;

结束然后使用此委托方法设置高度。

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
        CGSize contentSize = aWebView.scrollView.contentSize;
        NSLog(@"webView contentSize: %@", NSStringFromCGSize(contentSize));
        yourwebview.contentsize = contentSize;
    }

使用您的 Web 视图的委托方法执行此操作:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    webView.frame = CGRectMake(0, 0, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height);
}

您可以使用委托方法 webViewDidFinishLoad:,但有时会在 HTML 完全呈现之前调用此方法,这会导致错误的高度值。

为了使这项工作可靠,您必须等到 HTML 完全呈现,然后使用 Javascript 将正确的高度发送到您的 UIWebView。

请看一下我前段时间写的blogpost