【问题标题】:After rotation being made to UIImageView, how should I check if a touch point is inside the UIImageView region?对 UIImageView 进行旋转后,我应该如何检查触摸点是否在 UIImageView 区域内?
【发布时间】:2011-12-06 09:48:17
【问题描述】:

我已尝试检查 CGRect:

 CGFloat imageX1 = imageView.frame.origin.x;
 CGFloat imageY1 = imageView.frame.origin.y;
 CGFloat imageX2 = imageView.frame.origin.x + imageView.frame.size.width;
 CGFloat imageY2 = imageView.frame.origin.y + imageView.frame.size.height;

 //NSLog(@"(%f, %f) - (%f, %f)", imageX1, imageY1, imageX2, imageY2); 
 if(imageX1 < touchedX && touchedX < imageX2 && 
     imageY1 < touchedY && touchedY < imageY2){ }

然后我知道这种类型的检查只在 UIImageView 没有被旋转/缩放时才有效。

我尝试过CGRectApplyAffineTransform(imageView.frame, imageView.transform);,但它为转换后的 UIImageView 创建了一个最小的矩形。

假设您有一个 UIImageView 旋转 45 度,并缩放到 1.5。现在,当您在 UIImageView 之外触摸几个像素时,它仍然认为触摸点在 UIImageView Rect 内部,但事实并非如此。 UIImageView 旋转和缩放,但 CGRect 仍然是原始的。

任何人都知道如何处理这个问题?我对图形的东西很陌生。任何事情都会有所帮助。谢谢!

【问题讨论】:

    标签: iphone ios ipad


    【解决方案1】:

    试试这个

    CGPoint touchLocation = [touch locationInView:self];
     if (CGRectContainsPoint(myImageView.frame, touchLocation))
    

    【讨论】:

      【解决方案2】:

      我回答我自己的问题。

      我在自定义 ImageView 类中移动了触摸事件,并拥有父 UIView 的引用。

      它解决了问题。

      感谢 Ankit 的提示!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多