繁体   English   中英

在对UIImageView进行旋转之后,我应该如何检查触摸点是否在UIImageView区域内?

[英]After rotation being made to UIImageView, how should I check if a touch point is inside the UIImageView region?

我试过检查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创建了一个最小的rect。

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

有谁知道如何处理这个? 我对图形的东西很新。 什么都有帮助。 谢谢!

尝试这个

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

我回答我自己的问题。

我将触摸事件移动到自定义ImageView类中,并具有父UIView的引用。

它解决了这个问题。

感谢Ankit提示!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM