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

我在每个单元格中都有几个自定义单元格和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>元素被视为字符串,因此返回更大的高度值

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

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

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

点赞