2012-08-10 55 views
1

剛開始使用Obj C for iOS時,我試圖在子視圖內動畫所有視圖(UIImageView),但是當我將延遲時間設置爲小於1其次,動畫會立即動畫化所有視圖。如果我將延遲設置爲1秒或更長時間,它將正確顯示動畫,但第二個動畫只會在第一個動畫完成後啓動。我想要將所有這些視圖重新制作動畫,例如視圖編號1將在其完成之前開始動畫,第二個視圖應該開始進行動畫製作。在延遲小於1秒的子視圖中動畫多個視圖

這是我的代碼。

-(void)animate 
{ 
    int delaytime = 0.3; //first view will start after 0.3 secs 

    for(UIView *view in self.subviews) 
    { 
     view.alpha = 0; //set it to transparent 
     delaytime += 1 ; //couldn't get the desired effect when it is less than 1 
     [UIView animateWithDuration:0.3 
           delay:delaytime 
          options: UIViewAnimationOptionTransitionNone 
         animations:^{ 
          view.alpha = 1;  // fade in    } 
         completion:^(BOOL finished){ 
          NSLog(@"Complete"); 
         }]; 
    } 
} 

回答

2

你的延遲變量是一個int,並因此總是舍入向下爲整數值(0.3變爲0並且甚至0.9999變爲0)。這就是爲什麼所有「延遲」小於一秒的時間立即開始,int變量不能保存十進制值。

而應該我們正確類型NSTimeInterval

NSTimeInterval delaytime = 0.3; 
+0

感謝大衛!我真的很粗心,錯過了這個細節。它現在完美。 – Kent 2012-08-10 15:34:35