各テーブル セルに左インデント (メッセージ スレッド/返信を考えてください) があり、動的な高さ (返信の内容) のラベルも含まれているテーブル ビューを読み込んでいます。私は 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でした。