XCode - 图像上触摸事件的精确相对坐标 - iOS

时间:2013-02-06 08:20:16

标签: ios objective-c xcode

我正在尝试构建一个简单的照片裁剪实用程序,用户可以触摸并选择图片边界。我需要精确的触摸坐标w.r.t图像。

当我使用

    CGImageRef imageRef = [staticBG.image CGImage];
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:[self view]];
    y3=location.y;
    x3=location.x;

坐标(x3,y3)以绝对比例显示,对处理imageRef无用。

我尝试使用

    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:staticBG];

但坐标仍然不匹配。

请帮忙。

2 个答案:

答案 0 :(得分:2)

使用以下代码:)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

        UITouch *touch = [touches anyObject];

        if ([touch tapCount] == 2) {
            //self.imageView.image = nil;
            return;
        }

        CGPoint lastPoint = [touch locationInView:self.YourImageView];
        NSLog(@"%f",lastPoint.x);
        NSLog(@"%f",lastPoint.y);

    }

答案 1 :(得分:0)

我认为我们不需要用户触摸的精确坐标,但要裁剪图像我将:

  1. 在图像上布置maskView,让用户选择要的区域 作物。 maskView具有精确的框架,可以很容易地知道。
  2. 使用touchesBegantouchesMoved检测用户触摸。而 用户触摸移动,也移动maskView(更改maskView的 帧)。在这一步中,我们需要确定哪个顶点 maskView最接近用户触及的Point - leftTop, rightTop,leftBottom或rightBottom。
  3. touchesEnded上,我们使用maskView的框架crop the image。 在这里,坐标足够精确。请注意,我们需要改变 maskView的图像坐标系框架。
  4. 希望有所帮助。 :)