根据其内容计算UIWebView高度

时间:2012-05-23 07:42:14

标签: iphone uitableview uiwebview

我有一个名为Announcement的班级,它有TitleNSString),Publishing DateNSString)和BodyNSString包含HTML内容)。

我想以类似于电子邮件应用中的方式显示它。当您阅读电子邮件时,您有前三个“行”(从,到,标题[日期]),然后是电子邮件的内容。

我想只创建“Title [date]”行然后创建正文。我想它是UITableView,它在第一个单元格Title上,在第二个单元格上有UIWebView

但似乎单元格的高度恰好是UIWebView,所以我的问题是:

如何根据UIWebView计算Body的高度?因为基本上当您垂直滚动时滚动整个UITableView,当您水平滚动时,只滚动UIWebView内容。

由于

2 个答案:

答案 0 :(得分:4)

在webview委托方法中,只需尝试使用以下代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView{
    [webviewTopicDesc sizeToFit];
    [webviewTopicDesc setFrame:CGRectMake(webviewTopicDesc.frame.origin.x, webviewTopicDesc.frame.origin.y, 300.0, webviewTopicDesc.frame.size.height)];
}

在此之前,将webview高度设为5.0。

希望对你有所帮助。

在这里,您可以根据字符串获得动态高度。

-(CGSize)getDynemicHeight:(int)pintFixWidth :(NSString *)pstrText
{
CGSize maximumSize=CGSizeMake(pintFixWidth, g_Max_Width);
UIFont *myFont = [UIFont fontWithName:g_Default_Font_Name size:g_Default_Font_Size];// font used for label
myFont=[UIFont boldSystemFontOfSize:g_Default_Font_Size];

CGSize sizeS = [pstrText sizeWithFont:myFont 
                   constrainedToSize:maximumSize 
                       lineBreakMode:UILineBreakModeWordWrap];

sizeS.height=sizeS.height+39;

return sizeS;
}

在这里,您必须使用font-style修复宽度和字体大小。

可能对你有帮助。

答案 1 :(得分:0)

有几种方法可以找到UIWebView内容的高度。

以下是一些指示:

How to determine UIWebView height based on content, within a variable height UITableView?

How to determine the content size of a UIWebView?

iPhone - get the Content Size of UIWebView

请注意,在UIWebView中使用UITableView并不是一个好主意,特别是如果您在同一个Announcements中滚动了很多UITableView。如果每UITableView只显示一个公告,您应该可以使用它,但对于有大量单元格要滚动的表格,在单元格中使用网页浏览可能会导致性能问题。

Apple也建议不要使用嵌入UIWebViews / UITableViews / UIScrollViews

来自UIWebView Class Reference

  

重要:您不应该嵌入UIWebView或UITableView对象   UIScrollView对象。如果这样做,可能会导致意外行为   因为两个对象的触摸事件可能混淆错误   处理。

我的2美分:)