uitableview cell在ios7中为单元格w自动调整大小。不止一个标签[IMG]

时间:2013-12-16 22:54:14

标签: ios uitableview height autoresize

我有一个显示状态提要的桌面视图(如下图所示),我试图弄清楚如何适当地调整每个单元格的大小,即具有较小单元格的较短状态和较大的单元格,以显示较长状态的所有状态文本。我遇到过这个啧啧:http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/

但是,我仍然有点困惑我将如何计算我的按钮的额外空间或左边缘为我的拇指img。

目前它由2个按钮,一个标签(用户名),一个拇指img和一个文本字段组成(不确定我是否应该使用文本字段或标签来显示状态,如果是的话我或者没关系工作)

如果这是一个已在某处得到解答的问题,请提前原谅。我主要是一个刚开始使用IOS的Android开发人员,并且在这个主题上找到了很多不同的答案,所以我不太确定IOS7中是否有这个问题的简单解决方案

enter image description here

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点,但我发现最可靠的是使用临时和不可见的UITextView来获得必要的大小。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Ideally you should do lazy loading so that instead of creating a new textView each time, you just reuse the same one.
    UITextView *temp = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44)]; //This initial size doesn't matter
    temp.font = __Your_desired_font__
    temp.text = @"Put your status here";

    CGFloat textViewWidth = __your_constraint_width__
    CGRect tempFrame = CGRectMake(0,0,textViewWidth,44); //The height of this frame doesn't matter.
    CGSize tvsize = [temp sizeThatFits:CGSizeMake(tempFrame.size.width, tempFrame.size.height)]; //This calculates the necessary size so that all the text fits in the necessary width.

    //Add the height of the other UI elements inside your cell

    return tvsize.height + staticElementHeights


}

这适用于iOS 7,但我认为如果你想支持iOS 6,你需要实际添加textView作为子视图才能工作。只需设置temp.hidden = YES

文本在UILabel中的显示方式与UITextView不同,因此对于UILabel,您应该使用此答案中描述的方法 iOS auto adjust label height