I'm updating my app to iOS 7 and finally got it, but there's one thing I can't find a solution for.
In Xcode 4 I used the following method:
#define FONT_SIZE 14.0f
#define CELL_CONTENT_WIDTH 280.0f
#define CELL_CONTENT_MARGIN 10.0f
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; {
NSString *text = [textA objectAtIndex:[indexPath row]];
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = MAX(size.height, 28.0f);
return height + (CELL_CONTENT_MARGIN * 2);
}
But I'll get an error when using it in iOS 7:
Use -boundingRectWithSize:options:attributes:context:
I don't know how to convert my earlier version to this new method and it would be great if anyone could help me. Thanks in advance.
sizeWithFont methods were deprecated in iOS7. You should use boundingRectWithSize instead. If you also need to support prior iOS versions then you can use following code:
CGSize size = CGSizeZero;
if ([label.text respondsToSelector: @selector(boundingRectWithSize:options:attributes:context:)] == YES) {
size = [label.text boundingRectWithSize: constrainedSize options: NSStringDrawingUsesLineFragmentOrigin
attributes: @{ NSFontAttributeName: label.font } context: nil].size;
} else {
size = [label.text sizeWithFont: label.font constrainedToSize: constrainedSize lineBreakMode: UILineBreakModeWordWrap];
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments