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

Posted

技术标签:

【中文标题】XCode - 图像上触摸事件的确切相对坐标 - iOS【英文标题】:XCode - Exact relative coordinates of touch event on image - iOS 【发布时间】:2013-02-06 08:20:16 【问题描述】:

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

当我使用时

    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];

但坐标仍然不完全匹配。

请帮忙。

【问题讨论】:

但是如果你知道图像在视图中的位置并且 y3 和 x3 是视图中的触摸位置,你就不能简单地计算相对坐标吗?还是我理解错了? 是的,我试图做的,但最终结果不匹配。我希望它会......但它让我失望了:( 【参考方案1】:

使用以下代码:)

- (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);

    

【讨论】:

【参考方案2】:

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

    在图片上布局一个 maskView 让用户选择区域 庄稼。 ma​​skView 有一个精确的框架,很容易知道。 使用touchesBegantouchesMoved 检测用户触摸。尽管 用户触摸移动,同时移动 maskView(更改 maskView 框架)。在这一步中,我们需要确定哪个顶点 maskView 是最接近用户触摸的Point -- leftTop, rightTop、leftBottom 或 rightBottom。 在touchesEnded 上,我们使用maskView 的框架到crop the image。 在这里,坐标足够精确。注意我们需要改变 图像坐标系的 maskView 框架。

希望有所帮助。 :)

【讨论】:

这是一种更成熟的方法,我同意。我想我迟早要按照你的方式去做……但我的意思是……没有任何可能的方法可以准确地找出接触点吗? (P.S:-我还想在图像上添加四个按钮来标记裁剪的四个角并让用户沿着这些按钮拖动。但首先我需要看看我是否可以通过获取触摸点来做到这一点)

以上是关于XCode - 图像上触摸事件的确切相对坐标 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

如何以 xamarin 形式绘制图像?

如何将子视图上的触摸事件的坐标转换为其父视图中的坐标?

无法在 Android 设备上的 Javascript 中获取触摸事件的坐标

触摸结束事件后更新父视图控制器上 MKAnnotation 的坐标属性?

移动端常用触摸事件以及常用坐标

animateWithDuration 在升级到 xcode 4.6 后导致 ios4 上的触摸事件出现问题