4

私はこの素晴らしい答えから来ました:
UITableView で自動レイアウトを使用して動的なセルレイアウトと可変行の高さ

その回答で説明されていることを実装しましたが、少し異なるシナリオに直面しています。私は持っていませんUILabelが、代わりにUILabels の動的リストを持っています。

テーブルビューがどのように見えるべきかのいくつかの異なるケースを示す画像を作成しました:

ここに画像の説明を入力

レポの現在の状態では、セルはセルの に合うように垂直方向に成長しませんcontentView


アップデート

レポ: https://github.com/socksz/DynamicHeightCellAutoLayout

リポジトリからプロジェクトを取得して実行しようとすると、私が言及している問題が何であるかを正確に確認できます。機能させるために不足しているものを取得できません。

4

2 に答える 2

3

ここでの問題は、使用しているサードパーティ コンポーネント FXLabel にあり、テーブル ビューや自動レイアウトに関するコードにはありません。自動レイアウトをサポートするには、UIView のカスタム サブクラスで-[intrinsicContentSize]メソッドを適切に実装し、-[invalidateIntrinsicContentSize]何かが変更されたときに呼び出す必要があります。

この場合、FXLabel は上記のメソッドのスーパークラス実装 (UILabel) に依存しているように見えます。また、UILabel は、FXLabel が実装する方法で可変行間隔を処理するように設計されていないため、返す正しいintrinsicContentSize を認識していません。であるため、自動レイアウトの計算は正しくありません (この場合、固有のコンテンツ サイズが小さすぎるためです)。詳細については、この優れた obcj.io 記事の「自動レイアウトのカスタム ビューを有効にする」セクションを参照してください。

良いニュースは、iOS 6 の時点で、標準の UILabel で属性付きの文字列を使用してこれを達成できるはずだということです。スタック オーバーフローの回答はこちらで確認してください。

何らかの理由で FXLabel が本当に気に入った場合は、おそらく GitHub プロジェクトで問題を開くことができます (または、自分で修正してプル リクエストを送信してください)。

于 2013-12-15T19:46:08.320 に答える