0

我正在使用带有 ARC 的 Xcode 4.4 开发一个基于页面的 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 回答