动画同时具有不同的速度

时间:2012-11-24 06:30:15

标签: iphone ios ipad animation

我想以三种不同的速度执行三个标签的动画。 label1 with a duration of 1.0秒。 label2 with a duration of 2.5秒。 label3 with a duration of 5.0秒。

我试过" setAnimationDuration"方法,但它没有工作。 谁能告诉我,我做错了什么?

编辑: 完整场景: 我有一个scrollview。当我从右向左滑动时,背景图像正在改变,因为每个scrollview页面都有不同的背景图像。通过滚动,标签也可以开始动画,看起来它们从下一页开始,在完成滚动时,它们会停止到其特定位置。 我正在基于currentoffset执行动画。

代码:

- (void) scrollviewDidScroll:(UIScrollView *)scrollView{
    if(currentOffset > 1024)
        {
          [UIView beginAnimation: nil context:nil];
          [UIView setAnimationDuration: 1.0];
          label1.frame = CGRectMake(2048-currentoffset+ 100, Y, Width, Height);
          [UIView commitAnimation];
        }
    if(currentOffset > 1024)
        {
          [UIView beginAnimation: nil context:nil];
          [UIView setAnimationDuration: 2.5];
          label2.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
          [UIView commitAnimation];
        }
    if(currentOffset > 1024)
        {
          [UIView beginAnimation: nil context:nil];
          [UIView setAnimationDuration: 5.0];
          label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
          [UIView commitAnimation];
        }
      }

问题是setAnimationDuration无效。

3 个答案:

答案 0 :(得分:0)

尝试调用您在每秒调用的方法中发布的代码,如下所示:

NSTimer *t = [[NSTimer alloc] initWithFireDate:nil interval:1.0 target:self selector:@selector(yourmethod) userInfo:nil repeats:YES];

答案 1 :(得分:0)

试试这段代码。

[UIView animateWithDuration:1.0
                      delay:1.0
                    options:UIViewAnimationOptionTransitionNone
                 animations:^{
                      label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
                 }
                 completion:^(BOOL completed) {

                 }
];

答案 2 :(得分:0)

试试这个:

- (void)scrollviewDidScroll:(UIScrollView *)scrollView {
    if(currentOffset > 1024) {

        [UIView animateWithDuration:1 animations:^{
            label1.frame = CGRectMake(2048-currentoffset+ 100, Y, Width, Height);
        }];

        [UIView animateWithDuration:2.5 animations:^{
            label2.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
        }];

        [UIView animateWithDuration:5 animations:^{
            label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
        }];
    }
}