0

パンジェスチャに従って一連のCALayerを移動しようとしています。

私はこのコードを使用しています:

-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
    float newX = 0;  

    for (CALayer *layer in self.layer.sublayers) 
    {        
        [ layer setPosition:CGPointMake(layer.frame.origin.x + 50, layer.frame.origin.y)];
    }
}

しかし、CALayersはすべて画面の横に移動しています

私の質問は、私は何か間違ったことをしているのですか?

CALayersはこのように移動することは想定されていませんか?

ありがとう!

4

1 に答える 1

1

位置は実際には原点ではなく中央にあります(アンカーポイントを変更していない限り、変更していないと想定しています)。

レイヤーを右に50ポイント移動させたい場合は、位置を中央+50に変更する必要があります。次のようになります。

[layer setPosition:CGPointMake(layer.position.x + 50, layer.position.y)];

でも...

パンジェスチャレコグナイザーの値を使用することは決してないため、パンイベントごとに、すべてのレイヤーを50ポイント右に移動します。これが「CALayersがすべて画面の横に移動している」という意味である場合、これは間違っていることです。あなたが言ったように、レイヤーは動いています。

于 2012-06-14T21:33:24.377 に答える