Ich habe eine angepasste a UITableviewCell
. Es gibt ein Titel-Label und ein Detail-Label.Angepasste UITableViewCell Update Subviews
Jetzt möchte ich die Detail-Label-Attribute nach dem Inhalt anpassen. Wenn die Zeichenfolge Größe größer als der Rahmen ist gesetzt, dann die Anzahl der Linie 2.
Ich habe versucht, den Code in der cellForRowAtIndexPath
oder layoutSubViews
in der Zelle Klasse zu setzen.
Das Stück Code ist wie
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];
}
Es tatsächlich die, wenn die Bedingung vergangen, aber die Einstellung des Labels funktioniert nicht.
wahrscheinlich verwirren Sie zwischen detailLabel und detailTextLabel? Die zweite Sache ist, dass Sie hier nicht anrufen müssen [[setNeedsLayout]] es sollte ohne dies funktionieren. – Nikita