如何获得动态创建的UITextView iphone的高度

时间:2011-06-07 12:56:10

标签: iphone objective-c ios xcode uitableview

我正在尝试使用包含UITextViews的单元格创建一个表格,以获取可变数量的文本。我需要指定每个单元格的高度以匹配textviews的内容大小。我正在使用......

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITextView *historyNode = [[[UITextView alloc]init]autorelease];
    historyNode.text = (@"%@",[globalArrayWithStrings objectAtIndex:[indexPath row]]);
    NSLog(@"%2.0f",historyNode.frame.size.height);
    return historyNode.contentSize.height;
}

由于某种原因,它始终打印0.如果我打印在界面构建器中创建的textview的高度,它将打印正确的值。任何想法如何解决这个或为什么我不能得到文本视图的大小,直到它被添加到视图。

2 个答案:

答案 0 :(得分:5)

您可以使用 sizeWithFont:方法查找动态高度。您的 heightForRowAtIndexPath:应如下所示。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSString *text = [globalArrayWithStrings objectAtIndex:[indexPath row]];
    CGSize maxSize = CGSizeMake(textViewWidth, 999); // 999 can be any maxmimum height you want
    CGSize newSize = [text sizeWithFont:aFont constrainedToSize:maxSize lineBreakMode:textViewLineBreakMode];
    return newSize.height;
}

答案 1 :(得分:0)

首先设置uitextView的框架,然后你将获得文本视图的高度。