描述:下面代码是UIImageView的练习,图片中左下框是显示(鼠标在上方大框里点击位置的显示)
问题:代码中求的CGFloat scale的意义是什么?为什么之后要用点击坐标乘上这个scale?
麻烦尽量用通俗一点的语言给我解释下,谢谢
- (void) clicked:(UIGestureRecognizer *)gestureRecognizer
{
// 获取正在显示的原始位图
UIImage* srcImage = self.iv.image;
// 获取用户手指在iv控件上的触碰点
CGPoint pt = [gestureRecognizer locationInView: self.iv];
// 获取正在显示的原图对应的CGImageRef
CGImageRef sourceImageRef = [srcImage CGImage];
// 获取图片实际大小与第一个UIImageView的缩放比例
CGFloat scale = srcImage.size.width / 320;
// 将iv控件上触碰点的左边换算成原始图片上的位置
CGFloat x = pt.x * scale;
CGFloat y = pt.y * scale;
if(x + 120 > srcImage.size.width)
{
x = srcImage.size.width - 140;
}
if(y + 120 > srcImage.size.height)
{
y = srcImage.size.height - 140;
}
// 调用CGImageCreateWithImageInRect函数获取sourceImageRef中
// 指定区域的图片
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef
, CGRectMake(x, y, 140, 140));
// 让iv2控件显示newImageRef对应的图片
self.iv2.image = [UIImage imageWithCGImage:newImageRef];
}