iOS - UITableViewCell根据数据单元格保持更改高度

时间:2013-12-31 01:09:04

标签: ios twitter uitableview

我有一个tableView,其中每个cell都包含Twitter用户的用户名和推文:http://postimg.org/image/5p8y9wh47/

但是从图像中可以看出它并没有显示用户的整个推文。如何让它显示用户的整个推文并整体调整表格视图单元格?

我知道我必须使用heightForRowAtIndexPath,但我不知道如何开始......

cell.textLabel.text = [NSString stringWithFormat:@"%@ @%@", [tweet[@"user"] objectForKey:@"name"], [tweet[@"user"] objectForKey:@"screen_name"]];

cell.detailTextLabel = [NSString stringWithFormat:@"%@", tweet[@"text"]];

如何获取textLabel和detailTextLabel的高度(使用整个推文)并相应地更改单元格大小?

更新

我一直在尝试:

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

//get tweet data
NSDictionary *tweet = _userPosts[indexPath.row];

//create a string for the header - name (@username)
NSString *header = [NSString stringWithFormat:@"%@ @%@", [tweet[@"user"] objectForKey:@"name"], [tweet[@"user"] objectForKey:@"screen_name"]];

NSString *tweetData = [NSString stringWithFormat:@"%@", tweet[@"text"]];

CGSize constraintSize = CGSizeMake(320.0f, MAXFLOAT);

CGSize labelSize = [header sizeWithAttributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:14]} constrainedToSize:CGSizeMake(_feedTableView.bounds.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
}

1 个答案:

答案 0 :(得分:2)

您正在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

中执行此操作

查看Apple的NSString UIKit Additions Reference,了解如何获取字符串的大小:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/Reference/Reference.html#//apple_ref/doc/uid/TP40006893

您需要使用– boundingRectWithSize:options:attributes:context:来获取用户名和推文字符串的高度。