• ベストアンサー

Xcode - UIImageViewの余白詰め

XcodeでObjective-Cによる開発を勉強中の超初心者です。 UIImageViewに縦横比を保持した画像を動的に表示したい為、contentModeをUIViewContentModeScaleAspectFitに設定しています。 この場合、長辺が目いっぱいまで広がり、短辺には余白ができてしまいますが、この余白を詰める方法はありますか? AutoLayoutで左右を画面いっぱいまで広げて、上下は画像の縦サイズによって詰めたいと考えています。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

表示する画像の縦横比に合わせてイメージビューの表示枠(frame)を調整したいということですよね? AutoLayoutで実現したいんだったら、画像をイメージビューに設定したタイミングで、 以下のように画像の縦横比を指定したConstraintsを追加すればよいと思います。 _imageView.image = image; NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:_imageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:_imageView attribute:NSLayoutAttributeHeight multiplier:image.size.width/image.size.height constant:0]; [_imageView addConstraint:constraint]; 画像を再設定した時は、上記で追加したconstraintをremoveConstraintで一旦削除して、新しい縦横比のconstraintsを追加する必要があります。

jin7vwh7
質問者

お礼

ありがとうございます!早速試したところ、思い通りの結果になりました。 StoryBoard上からのAutoLayoutの操作はだいぶ慣れてきましたが、コードでの扱いにまだ慣れていません。 この問題で2日間悩みました・・・(汗) これからも精進いたします。 本当にありがとうございました。