我有以下设置:
如果浅蓝色视图(我称之为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吗?
答案 0 :(得分:3)
我不是百分百肯定,但我认为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))
...