Iphone 根据UIWebView的内容计算其高度

Iphone 根据UIWebView的内容计算其高度,iphone,uitableview,uiwebview,Iphone,Uitableview,Uiwebview,我有一个名为Announcement的类,它有一个Title(NSString),一个Publishing Date(NSString)和一个Body(NSString,带有HTML内容) 我想以类似于电子邮件应用程序的方式显示它。当你阅读一封电子邮件时,你有前三行(From,To,Title[date]),然后是电子邮件的内容 我只想创建“Title[date]”行,然后创建body。我设想它是一个UITableView,第一个单元格上有我的标题,第二个单元格上有一个UIWebView 但单元

我有一个名为
Announcement
的类,它有一个
Title
NSString
),一个
Publishing Date
NSString
)和一个
Body
NSString
,带有HTML内容)

我想以类似于电子邮件应用程序的方式显示它。当你阅读一封电子邮件时,你有前三行(From,To,Title[date]),然后是电子邮件的内容

我只想创建“Title[date]”行,然后创建body。我设想它是一个
UITableView
,第一个单元格上有我的
标题
,第二个单元格上有一个
UIWebView

但单元格的高度似乎正好与
UIWebView
的高度相同,所以我的问题是:

如何根据我的
身体计算my
UIWebView
的高度?因为基本上,当你垂直滚动时,你会滚动整个
UITableView
,而当你水平滚动时,你只会滚动
UIWebView
内容


谢谢

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

以下是一些要点:

请注意,在
UITableView
中使用
UIWebView
并不一定是一个好主意,特别是如果在同一
UITableView
中有许多
公告可以滚动浏览。如果每个
UITableView
只显示一条公告,您应该可以不受影响,但是对于有大量单元格可滚动的表,在单元格中使用网络视图可能会导致性能问题

苹果还建议不要使用嵌入式
uiwebview
/
uitableview
/
uiscrollview

从:

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


我的2美分:)

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

以下是一些要点:

请注意,在
UITableView
中使用
UIWebView
并不一定是一个好主意,特别是如果在同一
UITableView
中有许多
公告可以滚动浏览。如果每个
UITableView
只显示一条公告,您应该可以不受影响,但是对于有大量单元格可滚动的表,在单元格中使用网络视图可能会导致性能问题

苹果还建议不要使用嵌入式
uiwebview
/
uitableview
/
uiscrollview

从:

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


我的2美分:)

在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;
}
在这里,您必须使用字体样式来固定宽度和字体大小


可能对您有所帮助。

在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;
}
在这里,您必须使用字体样式来固定宽度和字体大小


可能对您有帮助。

它可以工作,但我需要最小的内容大小(或缩放比例)。基本上,当我加载web视图时,我希望显示完整的内容。我有更新我的答案和添加函数,以根据字符串长度获得动态高度。希望它能对你有所帮助。它可以工作,但我想要最小的内容大小(或缩放比例)。基本上,当我加载web视图时,我希望显示完整的内容。我有更新我的答案和添加函数,以根据字符串长度获得动态高度。希望它可以帮助你。我想要最小的内容大小(或缩放比例)。基本上,当我加载web视图时,我希望显示全部内容。在这种情况下,您需要将
UIWebView
scalesPageToFit
属性设置为
TRUE
我希望我的UIWebView具有以下帧=cRectMake(0,0320,高度),并且我希望内容具有完全相同的“宽度”(320)并相应地调整它的高度。例如,如果禁用scalesPageToFit,并为UIWebView(0,0320480)创建一个框架,则内容将水平固定,而我只能垂直滚动。我想要一些类似的东西,只是我希望已经根据内容的高度设置了高度。另外,我也希望能够进行缩放,但如果我将ScaleSpageToIt设置为,则最初内容不适合我的宽度。很抱歉,我没有说清楚。只要您在表中设置
UIWebView
,而不启用“用户交互”,就可以嵌入它们。正如您在摘录中所述,问题在于如何处理触摸事件。此外没有其他简单的方式来呈现html。我想要最小的内容大小(或缩放比例)。基本上,当我加载web视图时,我希望显示全部内容。在这种情况下,您需要将
UIWebView
scalesPageToFit
属性设置为
TRUE
我希望我的UIWebView具有以下帧=cRectMake(0,0320,高度),并且我希望内容具有完全相同的“宽度”(320)并相应地调整它的高度。例如,如果禁用scalesPageToFit,并为UIWebView(0,0320480)创建一个框架,则内容将水平固定,而我只能垂直滚动。我想要类似的东西,只是我希望高度已经设定好