私はUITableviewCell
をカスタマイズしました。内部にはタイトルラベルと詳細ラベルがあります。カスタマイズされたUITableViewCell更新サブビュー
今、コンテンツに応じて詳細ラベルの属性を調整したいと考えています。 文字列サイズがフレームより大きい場合は、行数を2に設定します。
セルクラスのcellForRowAtIndexPath
またはlayoutSubViews
にコードを挿入しようとしました。
コードの一部は、それが実際にあれば条件を通過したが、ラベルの設定は動作しません
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];
}
のようなものです。
おそらく、あなたはdetailLabelとdetailTextLabelを混乱させるでしょうか? 2番目のことは、ここで '[cell setNeedsLayout]'を呼び出す必要がないということです。 – Nikita