在加载之前查找UIWebview的内容高度

时间:2013-04-04 04:15:21

标签: uiwebview height

我在每个单元格中都有几个自定义单元格和Web视图。现在,我的要求是找到要在webview上加载的HTML字符串的高度,然后根据此更改自定义单元格高度和webview高度。

我知道文档的高度可以在-webViewDidFinishLoading委托中找到,但在我的应用程序中,我在每个单元格中都有很多单元格和webview,所以我觉得应用程序在滚动和制作时会变慢不必要的回调

目前我正在做这个给我字符串高度。

 -(float)getDynemicHeight:(NSString *)pstrText
    {
        CGSize constraint = CGSizeMake(683,600);

        CGSize size = [pstrText sizeWithFont:[UIFont systemFontOfSize:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

        CGFloat height = MAX(size.height, 44.0f);

        if (height>400) {
            return 400;
        }

        return height;
    }

然而,这会导致问题,因为偶数<div>元素被视为字符串,因此返回更大的高度值

1 个答案:

答案 0 :(得分:1)

在iOS 6中,如果您只想显示样式文本(不是混合了图像的文本或类似的文本),您可能希望使用NSAttributedString而不是Web视图。它允许您在不同的文本段,段落边距等中创建具有不同样式的文本。其度量标准定义明确,并附带测量方法。简单的UIView子类(如UILabel)现在可以显示属性字符串。或者您可以直接将其绘制到界面中。

http://www.apeth.com/iOSBook/ch23.html#_attributed_strings

如果你不能这样做,那么你想要做的事情基本上是不可能的。你不知道Web视图如何绘制一段复杂的HTML,直到它绘制了复杂的HTML。您只需更改应用程序的体系结构即可。例如,您可以提前绘制所有Web视图,以便在table-dataSource时间内获得所需的信息。