4

我在 UIView 的主层中有两个 CAShapeLayers。CAShapeLayers 具有复杂的形状,我需要知道是否在形状边界内触摸了一个点。另外,我需要知道触摸了哪个形状。

我正在尝试 containsPoint,但没有任何效果。

4

1 回答 1

7

在敲了两天的头之后,我能够生成这个奇怪的代码,看起来它正在工作!

目标是测试 CAShapeLayer。CAShapeLayer 在屏幕上移动,所以形状不是固定的。对 CGPath currentPoint 进行命中测试并不简单。

随意添加任何输入...

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{   

    CGPoint p = [[touches anyObject] locationInView:self];

    CGAffineTransform 转换 = CGAffineTransformMakeTranslation(-shapeLayer.position.x, -shapeLayer.position.y);

    if(CGPathContainsPoint(shapeLayer.path, &transf, p, NO)){    

       // 触摸在形状内部  
    }   

}
于 2011-02-13T21:52:40.617 回答