答えは簡単です。
UIImageView のフレームと、描いた正方形のフレームがあります (どちらも に対してself.view
)
を基準にして、正方形の原点を見つけるだけで済みますUIImageView
。
減算するだけです:
//get the frame of the square
CGRect *correctFrame = square.frame;
//edit square's origin
correctFrame.origin.x -= imageView.frame.origin.x;
correctFrame.origin.y -= imageView.frame.origin.y;
今correctFrame
は に対して相対的な正方形のフレームですが、imageView
はsquare.frame
まだ相対的ですself.view
(変更していないため)
画像の解像度に応じてフレームを取得するには、上記とまったく同じことを行います。
float xCoefficient = imageResolutionWidth / imageView.frame.size.width;
float yCoefficient = imageResolutionHeight / imageView.frame.size.height;
correctFrame.origin.x *= xCoefficient;
correctFrame.origin.y *= yCoefficient;
correctFrame.size.width *= xCoefficient;
correctFrame.size.height *= yCoefficient;
理由: 画像の解像度は imageView.frame よりもはるかに大きいため、平方を調整する係数を計算する必要があります。
それで全部です!