我已经阅读了很多类似的问题,但找不到我正在寻找的答案。
这篇文章解释了很多: How to use CGRectContainsPoint() with rotated UIView
我的情况:我有一个带有UIImageView的UIScrollView,其中包含一个"全尺寸图像"。 contentsize == image.size。当我点击屏幕时,另一个UIImageView被添加到UIImageView(全尺寸图像)上。我使用此代码来确定添加的位置:
CGPoint position = [gestureRecognizer locationInView:_imagescrollview];
CGPoint positioninimageview = [_imagescrollview convertPoint:position toView:_editimageview];
UIImageView被添加到MutableArray中。当我点击屏幕时,它通过循环遍历包含添加的UIImageViews的MutableArray来检测是否单击了UIImageView。如果为True - >选择UIImageView进行编辑,然后选择>在触摸位置添加新的UIImageView。
- (UIImageView *)getImageViewUnderTouch:(CGPoint)position {
UIImageView *imageview = nil;
for (int i = 0; i < [imageviewarray count]; i++) {
imageview = [imageviewarray objectAtIndex:i];
if (CGRectContainsPoint(imageview.frame,position)) {
return imageview;
}
}
return nil;
}
除旋转UIImageView外,所有工作都有效。帧变大,因为边界在该帧中旋转(我得到了!)。所以当你点击框架它将返回UIImage,但我不想要那样。我希望当点击在UIImageView的Bounds内时返回UIImageVIew。我特别使用convertPoint尝试了很多:..
不知何故,我需要根据UIImageView的边界转换位置。它需要知道框架是否旋转。
CGPoint positioninbounds = [imageview convertPoint:position toView:_editimageview];