【问题标题】:Converting UIImageView Touch Coordinates to UIImage Coordinates将 UIImageView 触摸坐标转换为 UIImage 坐标
【发布时间】:2013-06-16 12:23:02
【问题描述】:

我能够确定 UIImageView 上的触摸事件的坐标。然后我需要将这些坐标转换为正在显示的图像的坐标 - 这应该是不同的,因为我的图像比 UIImageView 大得多,并且我正在使用 AspectFit 缩放图像。

在给定 UIImageView 的视图坐标的情况下,确定触摸事件的图像坐标的最佳方法是什么?

【问题讨论】:

    标签: ios objective-c uiimageview uiimage


    【解决方案1】:

    这样的事情应该会让你继续前进。

    CGPoint imageViewPoint = [touch locationInView:imageView];
    
    float percentX = imageViewPoint.x / imageView.frame.size.width;
    float percentY = imageViewPoint.y / imageView.frame.size.height;
    
    CGPoint imagePoint = CGPointMake(image.size.width * percentX, image.size.height * percentY);
    

    假设UIImageView 称为imageView,则UITouch 称为touchUIImage 称为image

    【讨论】:

    • 完美!正是我想要的!
    • 如果 UIImage 不完全适合 UIImageView 并且 UIImage 之间存在一些空间怎么办。如何在 UIImage 上获得正确的点?
    • @Boyi 您必须在计算中考虑到这一点。但是,我不知道这怎么可能。您必须查看内容模式和图像的大小才能确定图像在图像视图中的位置。使用自动布局更容易使图像视图适合正确的纵横比。
    • 如果我需要在缩放imageView后获取触摸点,那么ScrollView ContentOffset和ZoomScale在这个计算中的作用是什么?请帮助
    • @boyi,当 contentMode 为 AspectFit 时,您可以使用 AVFoundation 中的 AVMakeRect 来计算 ImageView 内的图像帧(我认为这是您正在使用的,来自您的评论)。在计算百分比 X/Y 时,从那里减去原点和宽度差。
    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多