親ビューの中央にUIImageView
を配置しようとしています。画像は元のアスペクト比を維持しなければならず、親の境界を超えてはいけません。したがって、横の画像は親の幅によって制限され、縦の画像は元の比率を維持しながら必要な垂直スペースを占有する必要があります。AutoLayout:UIImageViewとAspect Fitコンテンツモード
AutoLayoutではかなり単純な作業のようですね。ここに私のセットアップはUIImageView
のためです:
- 中央垂直親で
- 中央水平親で
- imageView.width < = superview.width
- imageView.height < = superview.height
contentMode
からAspect Fit
にも設定します。すべては、デバイスの画面よりも小さい小さな画像では本当にうまくいくが、なんらかの理由で私の大きな画像(imageView.backgroundColor = [UIColor greenColor]
に注意)のために、UIImageView
は基底のUIImage
よりも多くの領域を取る。
なぜこの出来事はありますか?私は自分の制約によってAutoLayoutの専門家ではないと思う。 200x400のような小さい画像を使用すると、UIImageView
は、緑色の余白がなく、画面上で正確に200x400ポイントを取ります。
境界線と丸みのある角を追加したいと思いますが、この場合は正しく動作しません。
私はこのビューで異なる画像を表示する必要があるので、私は事前に、残念ながらアスペクト比を知らない:大、小、風景、ポートレート、あるいは広場。スクリーンショットからの画像は、3264x2448解像度を有しており、実際には適切に縮小されている:それは、その比率を維持し、それが切り捨てられないか、またはdisstorsed.Butは、残念ながら画像ビューは、画像そのものよりも物理的な空間を取ります。テスト目的のためだけに緑の背景が追加されました。私は角丸を追加する必要がなく、画像ビューのエッジが画像と同期していないため、これらのコーナーは表示されませんので、透明な背景が動作しません。 – fraggjkee
しかし、私は私もプログラムで対応するアスペクト比の制約を追加してみてくださいすることができると思う...ので、この質問のアイデアは、それが達成可能であるかどうかを理解することでした計画のような音:)しかし、すべて実際に私は計算することができますし、自動レイアウトすることなく、プログラム的にすべてを設定Swift/Objective-Cコードを書くことなく。 – fraggjkee
@fraggjkee:あなたの計画が失敗した場合は[OK]を、しかし、ちょうど更新の回答から、私の関数を使用します。私は大きくて小さく、肖像画と風景の画像でそれをテストしたが、期待どおりに動作するようだ。 – alexburtnik