0

画面上で右から左に移動しているオブジェクトがあります。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:7.8];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
 myImageview.layer.position = CGPointMake(20,  myImageView.layer.position.y);
[UIView commitAnimations];

アニメーションがまだ行われている間でも、XCodeはすでに画像の場所を最終的な宛先としてマークしていることがわかりました。動画のタッチを検出するには、presentationLayerを使用する必要があります。

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

    [super touchesBegan:touches withEvent:event];

    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];

    if ([myImageview.layer.presentationLayer hitTest:touchPoint]) {
        NSLog(@"it's a hit!");
    }
}

この部分は機能します。さて、押すと画像が上に移動して欲しいです。 横向きの動きを続けながら、画像を上に動かしてほしい。 代わりに、このコードは画像を上に移動するだけでなく、左側の最終的な目的地まで移動します。

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

    [super touchesBegan:touches withEvent:event];

    UITouch *touch = [touches anyObject];   
    CGPoint touchPoint = [touch locationInView:self.view];

    if ([mouse.layer.presentationLayer hitTest:touchPoint]) {
        NSLog(@"it's a hit!");
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];
        myImageView.layer.position = CGPointMake( mouse.layer.position.x,  myImageView.layer.position.y - 40);
        [UIView commitAnimations];
    }
}

横向きの動きを続けながら、画像を上に動かしてほしい。誰かがこれを達成する方法を知っていますか?

本当にありがとう!

4

1 に答える 1

2

アニメーションオプションを設定してみましたUIViewAnimationOptionBeginFromCurrentStateか?

(iOS 4で導入されたブロックベースのアニメーションメソッドのオプションであるため、オプションと言います。これは[UIView setAnimationBeginsFromCurrentState:YES]、非推奨のUIViewクラスメソッドからまだ切り替えることができないかのように利用することもできます。)

touchesBeganは(ブロックアニメーションを使用して)次のようになります。

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

    [super touchesBegan:touches withEvent:event];

    UITouch *touch = [touches anyObject];   
    CGPoint touchPoint = [touch locationInView:self.view];

    if ([mouse.layer.presentationLayer hitTest:touchPoint]) {
        NSLog(@"it's a hit!");
        [UIView animateWithDuration:0.5 delay:0.0 options:(UIViewAnimationOptionCurveLinear & UIViewAnimationOptionBeginFromCurrentState) animations:^{
            myImageView.layer.position = CGPointMake( myImageView.layer.position.x,  mouse.layer.position.y - 40);
        }completion:^(BOOL complete){
            //
        }];
    }
}

xこれを使用すると、必要な最終座標とy座標を指定して、オブジェクトがタッチされたポイントからその位置までアニメーションを進めることができるはずです。

于 2012-10-03T03:40:38.420 に答える