UIImagwViewにAspect Fitで配置されたUIImageの位置・サイズを求める

UIImageViewでViewをAspect Fitに指定すると、比率を保ったままView内に画像を収めてくれます。こんな感じに。カメラロールで見るのと同じですね。

 

Aspect Fitでの画像表示

ただUIImageViewをクリックした時に、UIImageの座標を取得しようと思うと、基本的に縮小されているために計算が必要になります。その前段として、UIImageがUIImageView内でどのくらいのサイズで表示されているのかを取得する必要があります。まあ自前で計算できなくないですが、ちょっと面倒だし、そんなのメソッドがあるんじゃないかと探したら、見つかりました。

参考:UIImageView で ‘Aspect Fit (UIViewContentModeScaleAspectFit)’ を指定したときの画像サイズを取得する

    CGRect innerframe = AVMakeRectWithAspectRatioInsideRect(_originalImage.size, _myImageView.bounds);
 
    NSLog(@"--_originalImage.width %f",_originalImage.size.width);
    NSLog(@"--_originalImage.height %f",_originalImage.size.height);

    NSLog(@"--width %f",innerframe.size.width);
    NSLog(@"--height %f",innerframe.size.height);
    NSLog(@"--x %f",innerframe.origin.x);
    NSLog(@"--y %f",innerframe.origin.y);

※_originalImage:元画像(UIImage)
_myImageView:表示用View(UIImageView)

で、結果はこちら。

2014-07-06 02:15:32.946 faceCamera2[14996:60b] --_originalImage.width 2048.000000
2014-07-06 02:15:32.947 faceCamera2[14996:60b] --_originalImage.height 1536.000000
2014-07-06 02:15:32.948 faceCamera2[14996:60b] --width 320.000000
2014-07-06 02:15:32.950 faceCamera2[14996:60b] --height 240.000000
2014-07-06 02:15:32.951 faceCamera2[14996:60b] --x 0.000000
2014-07-06 02:15:32.953 faceCamera2[14996:60b] --y 142.000000

このメソッドは、AVFoundation.frameworkを使っているのでimportが必要です。しかし、UIImageViewにあってもよさそうなのに、何故、AVFoundationにあるのかは謎。おかげで見つけるのに時間かかりました。。。

「UIImagwViewにAspect Fitで配置されたUIImageの位置・サイズを求める」への1件のフィードバック

コメントは停止中です。