nikBhosale
nikBhosale

Reputation: 541

Table cell label not wrapping last line in iOS7

I am getting very strange problem in my app. I am creating table view cell dynamically. And adjusting height of cell label according to content.

My problem is that my cell label is not showing last line after wrapping means if there are total three lines for my label then label shows only two lines. The code was working on iOS6 but on iOS 7 it is giving problem.

 [labelCell.contentView bringSubviewToFront:labelCell.textLabel];
 labelCell.textLabel.numberOfLines = 0;
 labelCell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
 NSString *fieldLabel = labelCell.textLabel.text;
 CGSize textSize = [self sizeForLabelWithString:fieldLabel width:600.0f  andIndexPath:indexPath];
 float newHeight = textSize.height+22.0f;
 labelCell.height = newHeight;

Upvotes: 0

Views: 1347

Answers (3)

kendall
kendall

Reputation: 11

I was having the same issue and just stumbled across this. My label was resizing to the correct size, but it wasn't showing the last line on any labels that wrapped to several lines. Moreover, when I selected/unselected the cell, I could suddenly see the last line.

I was able to resolve the issue by adding a small fudge factor (2 points) to the height of my cell. I updated the value to use for the height of the cell from:

return labelHeight + 2 * kTopAndBottomPadding;

to:

return labelHeight + 2 * kTopAndBottomPadding + 2.f;

Upvotes: 1

Pradhyuman sinh
Pradhyuman sinh

Reputation: 3928

use this method:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSString *fieldLabel = labelCell.textLabel.text;

    CGSize textSize = [fieldLabel sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0f] constrainedToSize:CGSizeMake(600, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
    float newHeight = textSize.height+22.0f;
    return newHeight;
}

Add below code to cellForRowAtIndexPath

UILabel *lblfield=[[UILabel alloc] init];
NSString *fieldLabel=[NSString stringWithFormat:@"%@",labelCell.textLabel.text];
CGSize textSize = [fieldLabel sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0f] constrainedToSize:CGSizeMake(600, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
float newHeight = textSize.height+22.0f;
lblfield.frame=CGRectMake(10, 0, 600, newHeight);
lblfield.backgroundColor=[UIColor clearColor];
lblfield.text=strusername;
[cell addSubview:lblfield];

Upvotes: 1

Ganapathy
Ganapathy

Reputation: 4614

You are changing the label height based on the content. So you need to handle the cell height dynamically or need to set the height of a cell based on the content(Max among the string.). i.e

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return MAXStringHeght;
}

and try once.

Upvotes: 0

Related Questions