如何让CGRectContainsPoint()处理旋转的UIImageView的边界

时间:2015-07-28 10:23:00

标签: ios objective-c uiview uitouch cgpoint

我已经阅读了很多类似的问题,但找不到我正在寻找的答案。

这篇文章解释了很多: 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];

0 个答案:

没有答案