2017-10-14 5 views
1

私は単一の画像ビューを含むセルを持っています。それはどのようにそのようなcostraintsを持っている:左(12)トップ(12)右(12)ボット(12)。正方形の画像表示を自動レイアウトにする方法

しかし、そのオフセットを保存するには、height = widthのような制約を追加する必要があります。画像は常に正方形になりますが、右オフセットは12に等しくなります。

高さ=幅の制約画像を追加した後は表示されません。 イメージはWebからダウンロードされるため、すぐには使用できません。 修正方法?

+0

IBを使用して正方形のビューを表示したい場合は、私が昨年3月にした回答(Swift 3)と関連するGitリポジトリを示します。 https://stackoverflow.com/questions/42860324/autolayout-contraints-for-a-view-from-xib/42861232#42861232これは、(a)1:1のアスペクトを(2)設定と共に設定することです*優先順位の異なるマージンの高さ/幅のオフセットに対する2つの制約。 – dfd

+0

コメントを分けてください:あなたの問題がコードで正方形のビューを作る方法であれば、レイアウトアンカーを使って別のSwift 4答えを与えることができます。それは基本的に同じタイプの戦略です。 – dfd

答えて

3

ステップ1:Viewを選択し、4つの制約を追加:TopLeftRightAspect Ratio

enter image description here

ステップ2:ビューのaspect constraintを選択(例: - X : Y)を

enter image description here

手順3:マルチプライヤー1:1を設定すると、すべて設定されています!

enter image description here

+0

不幸にも、それはうまく動作しません。セルがあると思われる「灰色」の矩形が表示され、警告が1回のみ:テーブルビューセルのコンテンツビューで制約があいまいにゼロを示唆する場合が検出されました。私たちは意図せずに崩壊を考え、代わりに標準の高さを使用しています。 –

1

あなたの制約罰金です。ロイの答えも正しいです(画像の表示が画面の外側に描画されるので、横長モードではうまく機能しませんが、上下左右の余白を維持しながら幅を高さに合わせようとしているためです)。しかし、ダウンロードしてイメージを取得するImageViewの制約を設定しているので、予期しない結果に終わるでしょう。したがって、イメージビューの本質的なコンテンツサイズは、実行時にイメージのサイズによって定義されます。

あなたがここでできることは、イメージビューがその境界よりも大きくならないようにすることです。 Interface Builderから "Clip To Bounds"オプションを選択するだけです。

関連する問題