0

質問:それぞれ異なる行数を含むことができるラベルが並んでいる場合、どのようにUITableViewAutomaticDimensionを使用してUITableViewCellで制約を使用できますか?セルフサイズ内の水平UILabels UITableViewCell

私が並んでラベル側を含むセルを持つテーブルがある:

tablecells with horizontal labels

一方の側のラベルの1つは、より多くのラインを持っている場合、私はきちんとサイズに電池を得るに苦労しています他の側の対応するラベルよりも。ラベルの1つは常に切り捨てられます。両方のラベルの行数が同じ場合、セルのサイズが完全に変更され、すべてのテキストが表示されます。

私はいくつかの制約を微調整しようとしましたが、望みどおり完全に動作するものは何もありません。

高さの隠しラベルを追加しようとしましたが、ラベルが4つのセルではうまく機能しません ラベルをビューに配置しようとしましたが、ビューの高さには計算される。

現在、制約は正常に設定されています:上、下、左、右、ラベルは0行などに設定され、両方のラベルが同じテキストまたは同じ行数を持つ場合に効果的です。

私は制約でこれを行うことができますか?または、インデックスパスの行の古い高さに戻す必要がありますか? =(

答えて

0

制約を使用するだけで何をしたいのかを達成する方法があります。そのトリックは、equalではなく、2つの下のラベルと下端の間の制約の関係をGreater Than or Equalに設定することです。ここで

は私が制約を設定する方法である。この結果を持ってい

enter image description here

enter image description here

それとも、Greater Than or Equalにトップラベル部と底部との間の制約を設定でき、下限制約をequalのままにします。

enter image description here

この結果を取得するには、次の

enter image description here

+0

を最初のオプションはうまく動作ありがとう – Amos

0

私はのtableView使用に戻す必要はありませんでした解決策が見つかりました:。heightForRowAtIndexPathを

私はclearColorに設定されたテキストの色をセルにラベルを追加し、「heightLabel」と呼んで私が追加しました。セルがheightLabelの制約に基づいてサイズを変更しますので、heightLabelへの制約。

そして、ほとんどのテキストを持っていた左または右のラベルのいずれか、私はheightLabelの内側にそのラベルのテキストを配置。

細胞はまだありませんでしたサイズを変更して、返す前にセルで 'layoutIfNeeded'を呼び出す必要がありましたtableView:cellForRowAtIndexPathのセル。

heightLabelの制約が、セルのサイズを変更するために使用され、UITableViewAutomaticDimensionsが正しく機能しています。

これは最適な解決策ではないかもしれませんが、うまくいきます。これを行うためのより適切な方法がある場合は、私は提案に開放しています。

関連する問題