0

ビューに複数のCAレイヤーがあり、特定のレイヤーを取得して、アニメーションで削除するなどのタスクを実行したいと考えています。hitTestメソッドを使用して取得するのは、その場所のCGPointだけです。この時点で、タップされたレイヤーの場所を取得するにはどうすればよいかわからないので、特定のアクションを実行できます。

前もって感謝します...

4

2 に答える 2

1

UIViewに対してこれを実行しましたが、CALayerに対しても同じことを試してください。

 for(CALayer *layer in [self.view subviews]){
    if([layer class]==NSClassFromString(@"CALayer")){
        if([layer hitTest: location]){
            NSLog(@"you have clicked the layer in the point location");
        }
    }
}
于 2012-11-08T09:31:27.683 に答える
0

CALayer::hitTestを呼び出します

/*ポイント'p'を含むレイヤーの最も遠い子孫を返します。*兄弟は上から下の順序で検索されます。'p'は、CATransformLayerではない*レシーバーの最も近い祖先の座標空間にあると定義されます(変換レイヤーには、ポイントを指定できる2D *座標空間がありません)。* /

  • (CALayer *)hitTest:(CGPoint)p;

例:ホスティングUIView:

touchesEnded:(NSSet*)ts {
   UITouch *touch = ts.anyObject;
   CALayer *hit = [self.layer hitTest:touch.location]; 
}
于 2012-11-08T09:29:39.527 に答える