UIWebview调整高度以适应内容

7
我知道这个问题已经被问过很多次,但我无法使其正常工作。简而言之,我的UIWebview引入了一些具有不固定高度(宽度始终相同)的HTML,我只想根据内容更改高度。
我尝试了许多在网上找到的解决方法,但我的问题是webview将更改为正确的大小,但仅持续了短暂的一秒钟,然后又闪回到原始大小。
我应该指出的是,我的这个视图是由segue调用的,这是我能想到的唯一不同的事情!我想知道代码是否有效,但当segue完成交叉淡入淡出,翻转或其他操作时,它会重新绘制webview。
这是我的当前代码(我尝试了许多修复程序,包括大多数Java版本都做同样的事情),我还玩过scalesPageToFit和srollEnabled以及Storyboard中的一些选项。
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"Starting Size : %f", headerWebView.frame.size.height);

    headerWebView.scalesPageToFit = YES;
    headerWebView.scrollView.scrollEnabled = NO;
    CGRect frame = headerWebView.frame;

    frame.size.width = frame.size.width; // I used this to test, I put 200 in and it changes then flicks back too
    frame.size.height = 1;

    headerWebView.frame = frame;
    frame.size.height = headerWebView.scrollView.contentSize.height;
    headerWebView.frame = frame;

    NSLog(@"Finished Size : %f", headerWebView.frame.size.height);
}

日志显示;

初始大小: 176.000000 完成大小: 246.000000

有人知道为什么Webview看起来很好,但只能持续足够长时间让我注意到,然后就“缩小”了吗?

1个回答

3

有人知道为什么Webview看起来很好,但只能持续足够长的时间,让我注意到然后“缩小”回去吗?

我认为它看起来很好是因为你正在展示它正在发生的变化。为什么不在视图生命周期的早期或者甚至在webViewDidFinishLoading中隐藏Web视图呢?我会分享我的IB布局设置,以便提供进一步的帮助。如果这有所帮助或需要其他信息,请告知。我使用弹簧和支架而不是自动布局。我建议您尝试这些方法,看看是否有效。

隐藏我的Web视图数据加载可以防止用户在所有设置/数据就位之前看到任何内容。

    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSURL *baseURL = [NSURL fileURLWithPath:path];

    [webView setAlpha:0];
    [webView loadData:[dataString dataUsingEncoding:NSUTF8StringEncoding] MIMEType:@"text/html" textEncodingName:@"UTF-8"  baseURL:baseURL];

    [UIView animateWithDuration:0.1 animations:^{

        [webView setAlpha:1.0];

    } completion:nil];

Web View Springs and Struts Web View Settings


感谢提供的信息,由于其他原因,我最终采用了另一种方法。但是,我关闭了自动布局并使用了弹簧和支撑来解决其他许多问题。 - Recycled Steel
@RecycledSteel - 很高兴事情得以解决。您是否考虑接受我的回答作为您原始问题的答案? - Tommie C.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接