0

私は Xcode 4.4 と ARC を使用してページベースの iPhone アプリに取り組んでおり、しばらくこれに固執しています。特定のページで、UIImageView の指を上にスライドさせて何かを指し示し、画面から左にスライドさせる必要があります。これは、一度実行すると期待どおりに機能しますが、ページをめくって戻ると、2 本の指が互いに約 0.5 秒ずれてスライドします。

コードは次のとおりです。

-(void)fingerSwipeUp:(UIImageView *)imageView
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1];
    [imageView setCenter:CGPointMake(213.75,355.5)];
    [UIView commitAnimations];
}

-(void)fingerSwipeLeft:(UIImageView *)imageView
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1];
    [imageView setCenter:CGPointMake(-80,355.5)];
    [UIView commitAnimations];
}

UIImageView *finger = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"finger.png"]];

// position finger off the screen
[finger setFrame:CGRectMake(142.5,480,152.5,243)];
[self.view addSubview:finger];

[self performSelector:@selector(fingerSwipeUp:) withObject:finger afterDelay:6];
[self performSelector:@selector(fingerSwipeLeft:) withObject:finger afterDelay:8];

どんな助けでも大歓迎です

4

2 に答える 2

1

ViewDidAppear() で「指」ビューを作成していると思いますか? その場合は、ページをめくって (非表示にして) 戻るたびに、別の矢印 (サブビュー) を追加しています。代わりにこれはどうですか:

if (finger == nil) {
    finger = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"finger.png"]];
    [finger setFrame:CGRectMake(142.5,480,152.5,243)];
    [self.view addSubview:finger];
}

[self performSelector:@selector(fingerSwipeUp:) withObject:finger afterDelay:6];
[self performSelector:@selector(fingerSwipeLeft:) withObject:finger afterDelay:8];
于 2012-09-12T13:10:21.777 に答える
0

UIViewシーケンスに多数のアニメーションがある場合は、ブロックベースのアニメーション構文を使用する方が簡単な場合があります。

    [UIView animateWithDuration:1.0 delay:6.0 options:UIViewAnimationCurveEaseInOut animations:^{

    // animation 1

} completion:^(BOOL finished) {

        [UIView animateWithDuration:1.0 delay:8.0 options:UIViewAnimationCurveEaseInOut animations:^{

        // animation 2
    }];

}];

これにより、アニメーション 1 が終了した後にのみアニメーション 2 が開始されるため、アニメーション 2 を遅らせるときにアニメーション 1 の持続時間を考慮に入れる必要はありません。

于 2012-09-12T14:05:30.277 に答える