I have a customized a UITableviewCell
. There is a title label and a detail label inside.
Now I want to adjust the detail label attributes according to the content. If the string size is greater than the frame then set the number of line to 2.
I have tried to put the code in the cellForRowAtIndexPath
or layoutSubViews
in the cell class.
The piece of code is like
TransportationViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
UIFont* font = cell.detailLabel.font;
NSDictionary* attribute = @{NSFontAttributeName:font};
const CGSize textSize = [cell.detailLabel.text sizeWithAttributes: attribute];
if (textSize.width > cell.detailTextLabel.frame.size.width && cell.detailLabel.numberOfLines == 1) {
NSLog(@"%lf, %lf, %lu", cell.detailLabel.frame.size.width, textSize.width, (long)cell.detailLabel.numberOfLines);
cell.detailTextLabel.font = [UIFont systemFontOfSize:8];
cell.detailTextLabel.numberOfLines = 2;
[cell setNeedsLayout];
}
It actually passed the if condition but the setting of label doesn't work.