我有以下设置:

浅蓝色视图(称为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 super 视图?

最佳答案

我不确定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))
...

关于iphone - 检查 subview 中的点是否在父 View 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15651019/

10-14 20:15