答案很简单:
你有你的 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 大得多,所以你必须计算一个系数来调整你的正方形。
就这样!