Reputation: 1366
i'm currently developing on an app, which displays some tweets in a tableview. On the storyboard i created a prototype-cell, which includes the basic gui concept of a tweet entry.
It looks circa like this:
++++++++++++++
++Username++++
++++++++++++++
++Tweet+++++++
++++++++++++++
++Time-Ago++++
++++++++++++++
Now i'm calculating the height of the cell with the following code, but somehow it fails.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row];
NSString * tweetTextString = [currentTweet objectForKey: @"text"];
CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(630, 1000) lineBreakMode: NSLineBreakByWordWrapping];
float heightToAdd = 24 + textSize.height + 15 + 45;
if(heightToAdd < 90) {
heightToAdd = 90;
}
return heightToAdd;
}
By the way, there is something other, which is strange. If i scroll the tableview the whole app seems to freeze. Is this normal or am i doing something wrong?
Upvotes: 11
Views: 16049
Reputation: 895
If you are looking for the iOS 7 answer I ran across it here:
iOS 7 sizeWithAttributes: replacement for sizeWithFont:constrainedToSize
Upvotes: 3
Reputation: 1979
Try this for your issue:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row];
NSString * tweetTextString = [currentTweet objectForKey: @"text"];
CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(240, 20000) lineBreakMode: UILineBreakModeWordWrap]; //Assuming your width is 240
float heightToAdd = MIN(textSize.height, 100.0f); //Some fix height is returned if height is small or change it to MAX(textSize.height, 150.0f); // whatever best fits for you
return heightToAdd;
}
Hope it helps.
Upvotes: 13