1

我有以下设置:

在此处输入图像描述

浅蓝色视图,我们称之为parentView,有一个矩形子视图(紫色视图),称为childView。用户可以使用平移触摸来旋转和拉伸 childView,方法是将手指放在红点显示的点上并推动或拉动它。

childView可能 可以缩放到足够小,以至于在用户完成触摸后,红点表示的点将在parentView.

我的目标是创建一种可以检测红点是否在其中的方法parentView。我编写了以下代码:

CGPoint childViewRedPoint = CGPointMake(self.bounds.size.width, self.bounds.size.height / 2);
CGPoint rotatedChildViewRedPoint = CGPointApplyAffineTransform(childViewRedPoint, CGAffineTransformMakeRotation(self.rotateAngle));
CGPoint convertedChildViewRedPoint = [self convertPoint:rotatedChildViewRedPoint toView:self.superview];

if (CGRectContainsPoint(self.superview.bounds, convertedChildViewRedPoint))
{
    return YES;
}
else
{
    return NO;
}

首先,我找到 中定义的红点childView,然后将其旋转视图旋转的量,然后将其转换为parentViews坐标。

我得到的观点似乎没有意义,这不起作用。想知道是否有人知道我要去哪里错了?我没有考虑 parentViews superview 吗?

4

1 回答 1

3

我不是 100% 确定,但我认为这convertPoint:已经考虑了旋转(或任何其他转换),所以你只需要:

CGPoint childViewRedPoint = CGPointMake(self.bounds.size.width, self.bounds.size.height / 2);
CGPoint convertedChildViewRedPoint = [self convertPoint:childViewRedPoint toView:self.superview];

if (CGRectContainsPoint(self.superview.bounds, convertedChildViewRedPoint))
...
于 2013-03-27T04:01:31.817 回答