3

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

4

1 回答 1

1

在 iOS 6 中,如果您只想显示样式文本(不是混入图像的文本或类似的东西),您可能希望使用 NSAttributedString 而不是 web 视图。它允许您在不同的文本延伸、段落边距等中创建具有不同样式的文本。它的指标定义明确,并带有测量方法。简单的 UIView 子类(例如 UILabel)现在可以显示属性字符串。或者你可以自己画出来,直接进入界面。

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

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

于 2013-04-04T04:52:44.503 回答