3

I need to resize the cell height based on the content size/length.tried several methods, which one gives the exact height without overlapping?

8
  • 1
    check my answer given here stackoverflow.com/a/12600584/1538079 Commented Nov 2, 2012 at 6:43
  • Do you got the answer which is useful to implement? Commented Nov 2, 2012 at 7:02
  • yup..Customizing UITableViewCell's height.. this helped me Commented Nov 2, 2012 at 7:05
  • -(CGFloat)getLabelHeightForText:(NSString *)text andWidth:(CGFloat)labelWidth { CGSize maximumSize = CGSizeMake(labelWidth, 10000); //provide appropriate font and font size CGSize labelHeighSize = [text sizeWithFont: [UIFont fontWithName:@"Trebuchet MS" size:13.0f] constrainedToSize:maximumSize lineBreakMode:UILineBreakModeTailTruncation]; return labelHeighSize.height; } Commented Nov 2, 2012 at 7:06
  • @RamkumarThiyyakat check the post by Foram Mukund Shah Commented Nov 2, 2012 at 7:07

5 Answers 5

4

see this tutorial for change UITableViewCell Height Dynamically..

Resizing-A-UITableViewCell

and also use this tutorial..

uitableviewcell-dynamic-height

also use tableView:heightForRowAtIndexPath: method for set height of cell with indexpath

Sign up to request clarification or add additional context in comments.

Comments

3

This is from my previous answer - Customizing UITableViewCell's height:

Use this method to get the text height of the text

-(CGFloat)getLabelHeightForText:(NSString *)text andWidth:(CGFloat)labelWidth
{

CGSize maximumSize = CGSizeMake(labelWidth, 10000);

//provide appropriate font and font size
CGSize labelHeighSize = [text sizeWithFont: [UIFont fontWithName:@"Trebuchet MS" size:13.0f]
                         constrainedToSize:maximumSize
                             lineBreakMode:UILineBreakModeTailTruncation];
return labelHeighSize.height;
}

This method will return the height of the text you are passing. Add this method in your class. And use the tableView:heightForRowAtIndexPath: delegate method to set the height for each cell

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   Feedback *item = [self.items objectAtIndex:indexPath.row];

   CGFloat textHeight = [self getLabelHeightForText:item.comment andWidth:162];//give your label width here
    return textHeight;
}    

4 Comments

Feedback *item = [self.items objectAtIndex:indexPath.row];
what does this mean? can you please explain?i mean by Feedback .
That was the answer for his question. Feedback is an object and it stores the value from an array.
hey,What is feedback? Is it a class of urs? may i know what all you do in that particular class
2

Sample you can edit and try

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

NSDictionary *itemAtIndex = (NSDictionary *)[chatQuestions objectAtIndex:indexPath.row];

if ([self sizeForText:[itemAtIndex objectForKey:@"text"]].height+20>50) {
    return [self sizeForText:[itemAtIndex objectForKey:@"text"]].height+20;
}
else{
    return 50;}



}

 -(CGSize)sizeForText:(NSString*)text
  {


CGSize constraintSize;

constraintSize.width = 190.0f;

constraintSize.height = MAXFLOAT;
UIFont *labelFont = [UIFont fontWithName:@"Noteworthy-Light" size:18];

CGSize stringSize =[text sizeWithFont:labelFont constrainedToSize: constraintSize lineBreakMode: UILineBreakModeWordWrap];

return stringSize;
}

Comments

1
//Calculate the expected size based on the font and linebreak mode of your label
CGSize maximumLabelSize = CGSizeMake(296,9999);

CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font constrainedToSize:maximumLabelSize lineBreakMode:yourLabel.lineBreakMode];   

//adjust the label the the new height.
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;

Comments

0

In your case you need to set the height of cell based on the label.

Check the link :

http://dcraziee.wordpress.com/2013/05/22/calculate-size-of-uillabel-base-on-text-in/

There is a function named

-(CGFloat)getHeightForLabel:(NSString *)_str font:(UIFont *)fontOfObject

Use that function to calculate height as :

-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat _height  = [self getHeightForLabel:self.label.text font:[self.label font]];
    return _height;
}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.