1. ホーム
  2. ios

[解決済み] UIViewContentModeScaleAspectFillがクリッピングしない件

2022-05-12 16:56:10

質問

サムネイル画像を固定サイズ(100x100)で描画するために UIImageView . 画像ビューのフレームサイズを100x100に設定し、その上で contentModeUIViewContentModeScaleAspectFill .

私の理解では、これによって画像は私が設定したサイズで描画され、画像は画像の領域を満たし、画像ビューに設定したサイズから外れた部分をクリップするはずです。しかし、画像は私が設定した100x100のサイズより大きくも小さくも描画されたままです。

を設定すると contentModeUIviewContentModeScaleToFill に変更すると、画像は正確に100x100で描画されますが、その寸法に収まるように歪んでしまいます。アスペクト フィルが期待どおりにクリッピングされない理由について、何か思い当たることはありますか?

以下は私のコードです。

_photoView = [[UIImageView alloc] initWithImage:photoImage];
_photoView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:_photoView];

CGRect photoFrame = _photoView.frame;
photoFrame.size = CGSizeMake(100, 100);
_photoView.frame = photoFrame;

よりよく説明するために、私が見ているものをスクリーンショットで示します。緑色の四角は UIView を含む UIImageView で作業しています。背景色を緑に、ビューのフレームを100x100に設定しました。テストとして UIImageViews は 50x50 のサイズに設定されています。ご覧のように ...AspectFill を使用した場合、画像は50x50のサイズにならず、場合によっては希望する位置から外れてしまうことがあります。一方 ...ScaleToFill を使用すると、サイズは正しく調整されますが、画像は歪んでしまいます。

どのように解決するのですか?

クリップを境界線に設定してみてください。

[_photoview setClipsToBounds:YES];

あるいは、Storyboard / Xibに直接書き込むこともできます。