containsPoint не работает с CAShapeLayer? - PullRequest
4 голосов
/ 13 февраля 2011

У меня есть два слоя CAShapeLay для основного слоя UIView. CAShapeLayers имеют сложные формы, и мне нужно знать, касалась ли точка в пределах границ формы. Кроме того, мне нужно знать, какая фигура была затронута.

Я пытаюсь использовать содержащуюся точку, но ничего не получается.

1 Ответ

7 голосов
/ 14 февраля 2011

После двухдневного удара головой я смог создать этот странный код и похоже, что он работает!

Целью было запустить тест CAShapeLayer.CAShapeLayer движется по экрану, поэтому форма не в постоянном месте.Попробовать CGPath currentPoint непросто.

Не стесняйтесь добавлять любые входные данные ...

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

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

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

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

       // the touch is inside the shape  
    }   

}
...