読者です 読者をやめる 読者になる 読者になる

AutoLayout で UIImageView の幅を固定したのに横長の画像を表示すると幅が変わってしまう

objective-c ios
  • AutoLayout で UIImageView の幅を 80 に固定
  • UIImageView の contentMode は UIViewContentModeScaleAspectFill

このとき、縦よりも横の幅がかなり長い画像を表示すると、UIImageView の幅が変わってしまった。

調べたところ、縦横のアスペクト比が違う場合、その分はみ出てしまうようだ。 UIImageView の幅が変わったんじゃなくて、画像がはみ出て描画されていたのか。 確かに、UIImageView の右端を基準に配置したラベルの位置は変わっていなかった。

UIImageView から画像がはみ出てほしくないから、

self.imageView.clipToBounds = YES;

で UIImageView の bounds のみ描画されるようにして対処。