我在 UIView 的主层中有两个 CAShapeLayers。CAShapeLayers 具有复杂的形状,我需要知道是否在形状边界内触摸了一个点。另外,我需要知道触摸了哪个形状。
我正在尝试 containsPoint,但没有任何效果。
我在 UIView 的主层中有两个 CAShapeLayers。CAShapeLayers 具有复杂的形状,我需要知道是否在形状边界内触摸了一个点。另外,我需要知道触摸了哪个形状。
我正在尝试 containsPoint,但没有任何效果。
在敲了两天的头之后,我能够生成这个奇怪的代码,看起来它正在工作!
目标是测试 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)){ // 触摸在形状内部 } }