各テーブル セルに左インデント (メッセージ スレッド/返信を考えてください) があり、動的な高さ (返信の内容) のラベルも含まれているテーブル ビューを読み込んでいます。私は AutoLayout を使用しているので、UILabel
サイズ自体。それぞれのインデントを実装するために、私UITableViewCell
は SO のここにいる人々のアドバイスに従って、私のものをオーバーライドlayoutSubviews
したUITableViewCell
ので、次のようになりました。
- (void)layoutSubviews
{
[super layoutSubviews];
float indentPoints = self.indentationLevel * self.indentationWidth;
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width - indentPoints,
self.contentView.frame.size.height);
}
ただし、現在起こっていることは、UILabel テキストが下部で切り取られることがあります。UILabel は、適切な高さを計算し、インデントのある新しいフレーム サイズではなく (動的であるため) 描画するときに、古いフレーム サイズを使用しているように思えます。インデントを使用すると、同じテキストに使用できる幅が少なくなります。そのため、背が高くなる必要があることを認識している必要があります。
このインデントを削除してオーバーライドをコメントアウトするlayoutSubviews
か、呼び出しを[super layoutSubviews]
最初ではなく最後に配置すると、テキストは途切れなくなりますが、インデントは失われます。
私が望むのは、UITableViewCell
適切にインデントされ、動的 UILabel が新しいフレーム サイズを認識し、カットオフなしで描画することです。layoutIfNeeded
いろいろなところに電話をかけてみましたが、うまくいきませんUILabel
でした。