2016-11-23 14 views
0

私は、垂直スタックレイアウトにまとめられた複数のデータを持つUITableViewCellを持っています。それらのうちのいくつかは垂直方向に動的です.1つはUILabelで、もう1つはUIImageViewです。AutoLayoutを使用したUITableViewCellの動的イメージの高さ

UIImageViewは私が問題を抱えているものです。私は私のUITableViewCellのコンセントで高さの制約を設定しました。イメージは非同期にロードされるので、UITableViewCell行の高さは間違っていて、イメージがロードされると行の真の高さしか分かりません。画像がロードされた後に適切なアスペクト比に更新するように制約を設定すると、UITableViewは完全に信頼できなくなり、画像はあちこちにジャンプし、フォーマットは全くうまく機能しません。

私はStackOverflowの別の記事を見てきましたが、画像を事前に調べ、その幅と高さを取得して、画像がロードされる前にそれを特定して制約を設定できるようにしてください。スムーズなスクロールが可能です。

私の質問です:これが唯一の方法ですか?動的な画像サイズでAutoLayoutを使用する方が良い方法はありますか?彼らは何であろうか?

私はsetNeedsLayout、setNeedsUpdateConstraints、updateConstraintsIfNeededなどを呼び出そうとしました...いずれも動作していないようです。

アドバイスはありますか?

ジェームズ

答えて

2

あなたは画像サイズに基づいて、セルの高さを予測する必要がある場合は、動的なアニメーションと許容スクロール性能とセットアップスムーズなレイアウトにしたい場合は、[はい、あなたは画像を事前に調べる必要があります。

たとえば、Pinterestは、画像が非同期に取得される前にレイアウトを設定する必要があるため、APIレスポンスで要求されたPinの画像サイズを返します。実際には、自分のiOSアプリケーションで同じことを行います(API here )。画像についての拡張情報とPinterestのAPIレスポンスの例:

root:{} 1 item 
data:{} 5 items 
note:A hardened leather thimble to make stitching leather easier! 
url:https://www.pinterest.com/pin/310959549256036760/ 
image:{} 1 item 
    original:{} 3 items 
    url:https://s-media-cache-ak0.pinimg.com/originals/b2/19/ec/b219ec9b8418233c651de9d17bd00e4a.jpg 
    width:640 
    height:640 

第2のオプションは、「擬似動的高さ」を使用します。主な考えでは、セルの高さは常に予測可能で事前計算されていますが、セル内のイメージは動的なサイズを持っています。私は最近、この種の解決策のベストな説明をここに縫いました - Self-sizing Table View Cells

+1

ありがとうございました!私は、iOSとAndroidの両方で、あらかじめイメージのサイズを取得していました。滑らかなスクロールに関してはうまくいくと思われます。 –

+0

@JamesScott、よろしくお願いします! – dive

関連する問題