2017-02-23 6 views
0

テーブルビューの説明に基づいて
tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 60.0セルフサイジングテーブルビューセル2つのサブビューの高さ

細胞説明
私はContainerView内部2つのラベル(タイトル、説明)と、以下のように1つのImageViewの持つ細胞。セルの高さは、説明ラベルの内容に応じて異なります。
Contraints of all views

私は(ImageView.height + ImageView.Top + ImageView.Bottom)よりも大きいContainerView.height

  1. を処理すべき2つのケースがあります。ここでは、セルの高さはContainerView.heightに基づいています。
  2. ContainerViewの高さが(ImageView.height + ImageView.Top + ImageView.Bottom)より小さい。ここでは、Cellが高さとして(ImageView.height + ImageView.Top + ImageView.Bottom)を考慮して、ContainerViewをセルの垂直方向の中心にする必要があります。
    Expected Result in both the cases

問題私はその後、第二の場合は、作業とその逆されていない第一の場合の制約を設定(私は承知している場合は
そのスーパーに垂直センターをボトムContrainerView.Topを除去し、それを作ることにより、ケース2の結果が得られる)

IBの制約とUITableViewAutomaticDimensionの同じセットを使用して両方のケースで期待される結果を得る方法はありますか?

+0

「Vertically Center to SuperView」を実行した場合の問題は何ですか? –

+0

'heightForRow'と' estimatedheightfor'を使います。コンテナのサイズに合わせてセルを自動的に調整します。私はあなたが望むものだと思う。 –

+0

@agent_stack私がその制約を使用すると、_ケース1_は失敗します。インスタンスの場合、説明ラベルの内容が3行以上の場合、テキストはカットオフされます – Shyam

答えて

0

固定画像の高さと幅を指定します。それ以外の場合は、tableViewCellにイメージビューの上部と下部を知らせます。それが正しいセルの高さ

0

これらのデリゲートを使用し、

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 100; // height of default cell 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewAutomaticDimension; 
} 

編集]を計算することができるように

、このいずれかを試してみてください。

あなたのビュー階層は

このような

enter image description here

ImageViewの制約

enter image description here

は、ビューを追加し、その中に両方のラベルを置くべきです。コンテナが

enter image description here

ラベルのタイトル制約

enter image description here

ラベル説明制約

をcontraints

ラベル

enter image description here

編集出力

enter image description here

+0

ええ。私はそれをやっている。実際には、これらの[制約](https://i.stack.imgur.com/pyZMa.png)で作業するために_ケース1を作成しました。**問題**で言及したように、私は異なる制約を追加して、 _Case 2_は働いていますが、両方のケースが機能するように制約を追加できるかどうかを知りたいと思います。 – Shyam

+0

@Shyam Check Edit –

+0

@Shyam問題が解決しない場合は、編集回答の出力を追加しました。今、あなたの要件を達成することを願っています。まだ疑問が残っている場合は、私に知らせてください。 –

0

まずあなたが自己サイズのセルを使用していることを確認してください。 https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

は、両方の画像のトップとボトム制約を作りますビューとコンテナのビューをセルの端とmaそれらは>=です。

また、水平スタックビューを試して、セルの各エッジに厳格な(最高の優先度)制約を設定することもできます。

関連する問題