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

问题描述:

我在这里有点Iphone noob,所以请和我一起裸照。根据内容动态设置UIScrollView高度和UITableView高度

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

预计:根据从Web服务接收到的内容的长度,tableview的高度应该扩展。然后设置滚动视图高度以适应桌面视图的高度

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

任何帮助表示赞赏。谢谢。

单元格的宽度和高度被忽略;根据您从-tableView:heightForRowAtIndexPath:返回的值或(不及格)tableView.rowHeight重新确定电池单元的大小。如果单元格中的标签的大小足够大,可能会出现,就好像单元格足够大,因为标签允许比单元格更大(并且在外部)。

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

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

+0

我并不是想获得细胞的高度。 UITABLEVIEW是一个GROUPED TABLE,需要根据第4部分中找到的内容的长度进行更高或更短的设置。所有的文本显示在这第四部分没有问题。当我根据静态值更改UITABLEVIEW的高度时,我可以看到它。它被切断,因为它的初始高度设置为450.然后,一旦设置了高度,我需要设置uiscrollview来补偿uitableview的高度,以便我可以向下滚动并查看整个表格。 – Trevor 2011-04-12 03:36:00

+0

我不明白为什么我想在页脚中设置一些东西。 “尺寸正确”是什么意思?就像我说的,我不知道设置它的大小,因为文本永远不会是相同长度的字符。谢谢。 – Trevor 2011-04-12 03:37:42

+2

UITableView子类UIScrollView。你有没有把UITableView放在UIScrollView中?如果只是将非表内容放入表视图页眉/页脚中,则更有可能工作。或者,你可以使用tableView.contentSize(也许你需要强制布局?我不知道;它是icky)... – 2011-04-12 04:30:39

我只关注可变高度元素,找出适合文本的高度。为了弄清楚的是,当使用呈现一个片段这样的字符串将采取高度:

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]; 
+0

包含可变文本长度的单元格很适合。 tableview不够高,不能显示所有的内容,scrollview也不能容纳滚动所需的高度。 – Trevor 2011-04-11 23:35:52