根据内容动态设置UIScrollView高度和UITableView高度

时间:2011-04-11 22:57:13

标签: iphone uitableview uiscrollview

我在这里有点像Iphone noob,所以请光临我。

设置:我有一个滚动视图,其中包含标签,uiimage和嵌套在其中的tableview(已分组)。标签,uiimage和tableveiw由web服务填充。分组表视图中的最后一部分包含的文本永远不会相同,可能长达5个字符到250+。此外,此视图是从基本的tableview推送的(因此它有一个导航栏。如果这很重要的话)。

预期:tableview应根据从Web服务收到的内容的长度来扩展。然后设置scrollview高度以适应tableview的高度

问题:我不太确定如何解决这个问题。我真的只知道如何将高度更改为固定值,这在许多情况下无法正常工作。

感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

忽略单元格的宽度和高度;根据您从-tableView:heightForRowAtIndexPath:或(失败)tableView.rowHeight返回的值重新调整单元格大小。如果单元格中的标签大小足够大,它可能看起来好像单元格足够大,因为标签允许大于(并在外部呈现)单元格。

一种方法是覆盖-tableView:heightForRowAtIndexPath:以返回正确的高度。这实际上并不是UITableView的预期用途(它主要设计用于从内容列表动态生成的单个高度的大量行)。

另一种方法是设置tableView.tableFooterView = myCustomFooter。这可能是最简单的方法。在执行赋值之前正确调整大小(高度很重要;表视图将为您设置宽度)。还要确保未设置自动调整标志,或者在表视图更改大小时(例如,在自动旋转时),大小将随机更改。

答案 1 :(得分:0)

我只关注变量高度元素,找出适合那里文本的高度。要计算字符串在渲染时将采用的高度,请使用如下代码段:

CGFloat MY_TABLECELL_WIDTH = 320;
CGFloat MY_MAX_HEIGHT = 10000;
UIFont *MY_FONT = nil; // load the correct font here.
CGSize maxSize = CGSizeMake(MY_TABLECELL_WIDTH,MY_MAX_HEIGHT);
CGSize textSize = [serverString sizeWithFont:MY_FONT 
                        constrainedToSize:maxSize 
                        lineBreakMode:UILineBreakModeWordWrap];