2014-01-29 36 views
1

我有兩個UIView,我想以相同的速度同時移動。使用animateWithDuration以相同的速度動畫兩個視圖

[UIView animateWithDuration:0.25 animations:^ { 
    myView1.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0); 
    myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 100.0); 
}]; 

然而,上述操作的方式是指myView2動畫的速度是快兩倍myView1

我該如何同時獲得兩個視圖以相同的速度動畫(以便先完成一個動作,然後是另一個動畫,但同時開始動畫)?

+0

你有沒有注意到你正在將view1的高度分配給view2,並且順便提一句,如果兩個視圖的大小相同,第二個視圖將以雙倍速度進行,因爲它必須將高度最小化爲幾乎兩倍比view1 – channi

+0

是的,我意識到。 – BytesGuy

+0

那麼問題是否解決? – channi

回答

5

在同一時間開始他們,給需要旅行兩倍遠兩倍的時間這樣做動畫:

[UIView animateWithDuration:0.25 animations:^ { 
    myView1.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 100.0); 
}]; 

[UIView animateWithDuration:0.5 animations:^ { 
    myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0); 
}]; 

基本速度的數學。


的另一種方法:

[UIView animateWithDuration:0.25 animations:^{ 
    myView1.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0); 
    myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0); 
} 
            completion:^{ 
    [UIView animateWithDuration:0.25 animations:^{ 
     myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0); 
    }]; 
}]; 

我不知道哪種方法更好或將是優選的。

第一種方法使用兩個獨立調用animateWithDuration,每個視圖一個,一個動畫的兩倍時間的距離(所以相同的速度整體)的兩倍。

第二種方法通過completion塊使用對animateWithDuration的嵌套調用。首先,兩個視圖以相同的速度動畫到相同的大小。接下來,需要走兩次距離的視圖會爲剩餘距離(相同速度)生成動畫。

相關問題