【问题标题】:Checking to see if point in child view is in parent view检查子视图中的点是否在父视图中
【发布时间】:2013-03-27 02:35:50
【问题描述】:

我有以下设置:

浅蓝色视图,我们称之为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 吗?

【问题讨论】:

    标签: iphone ios cocoa-touch uiview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-11-17
      • 1970-01-01
      • 2015-09-05
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      相关资源
      最近更新 更多