This is the solution:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGSize constraintSize = CGSizeMake(286.0f, CGFLOAT_MAX);
UIFont *theFont = [UIFont systemFontOfSize:14.0f];
CGSize theSize;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
{
CGRect frame = [[self.mArray objectAtIndex:indexPath.row] boundingRectWithSize:constraintSize options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName:theFont} context:nil];
theSize = frame.size;
}
else
{
theSize = [[self.mArray objectAtIndex:indexPath.row] sizeWithFont:theFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
}
return theSize.height;
}
Also in - (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
I used cell.label.numberOfLines = 0
If you are using more than one Label in row - in CGSizeMake(286.0f, CGFLOAT_MAX)
use lower value than 286.0f (for example 150.0f)