2017-07-27 7 views
0

私の質問は、タイトルのとおりです。 私は、私が試した (ストーリーボードを通じて、私は0に、左と右の制約を設定)画面の幅に等しいImageViewの幅を設定しています:UIImageの高さを幅と同じに設定してください。

imageView.frame = CGRect(x: 0, y: 0, width: imageView.frame.width, height: imageView.frame.width)

をしかし、それは働いていません。残りのレイアウト(イメージがスタックビューにある)、または自分のコードに問題があるかどうかは不明です。

私の全体のレイアウトは次のとおりです。 enter image description here ありがとうございました。

答えて

0

imageView.frame.widthが0であるため、コードが機能しません。スタックビューの制約のアスペクトを1:1に設定し、イメージビューの左右の制約をストーリーボードのスタックビューに0として設定できます。

0

私の経験では、autolayoutはフレームの設定と混ざりません。フレームが自動レイアウト制約に基づいて設定されているということが全体的なポイントであると主張することができます。ポイントへ

よりは、私はあなたがやりたいことの漠然としたアイデアを得ると思う:

  1. あなたは、画面の幅全体になり、画像(またはその一部割合を持ちたいです);
  2. 正方形(または他の比率)にする必要があります。
  3. キャプションなどを自動的に調整できるように、垂直UIStackViewにしたいと思っています。

背景のビットは、UIImageView要素には「組み込み」のサイズがあり、表示されるイメージのサイズに設定され、そうでない場合はそれらのサイズになります。 UIStackViewのサイズを指定しない場合は、その要素の本来のサイズに基づいてサイズが決定されます。そのサイズを指定すると、そのサイズに合わせて要素のサイズを変更しようとします。

上記のシナリオを達成するには、幅をUIStackViewに設定する必要があります(たとえば、コンテナビューと同じ幅にするなど)。これにより、UIImageViewに同じ幅が適用されます。

UIImageViewの高さは、それが表示する画像の高さに基づいています。 UIImageViewを正方形にするには、アスペクト比の制約を1:1に設定します。

私があなたが達成したいと思ったことを誤解した場合や、さらに明確化が必要な場合は、幸いです。