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 回答