2012-11-24 116 views
1

我想以三種不同速度執行三個標籤的動畫。 label1 with a duration of 1.0秒。 label2 with a duration of 2.5秒。 label3 with a duration of 5.0秒。同時以不同速度動畫

我試過「setAnimationDuration」方法,但它不工作。 任何人都可以告訴我,我在哪裏做錯了?

編輯: 完成方案: 我有一個滾動視圖。當我從右向左滑動時,背景圖像會隨着每個滾動視圖的頁面具有不同的背景圖像而發生變化。隨着滾動,標籤也開始動畫,看起來他們從下一頁開始,在完成滾動時,他們停止到他們的特定位置。 我正在執行基於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不工作。

+4

你可以發佈您的代碼? –

回答

0

試着打電話給你的方法發佈的代碼將被稱爲每一秒,像這樣:

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

謝謝。我嘗試並回復。 – Piyush

0

試試這個代碼。

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

       } 
]; 
+0

謝謝,但無法正常工作。 我想同時啓動所有標籤,它應該以不同的速度動畫。 – Piyush

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); 
     }]; 
    } 
} 
+0

您只需要一條if語句。你有三個。 –

+0

@max_是的,這是真的,我只是複製操作代碼。更新。 – rdelmar

+0

我試過了,但不起作用。 主要問題是,框架正在改變的基礎上,「currentoffset」,而不是由於動畫。 如果我刪除動畫代碼,那麼它的工作原理也是一樣的,所有標籤都以相同的速度改變它們的框架。 – Piyush

相關問題