我有一個UIView稱爲波,它有一個很好的無盡的「浮動」動畫的iOS添加第二個動畫已經動畫的UIView
[UIView animateWithDuration:1
delay:0
options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut
animations:^{
CGPoint center = waves.center;
center.y += 5;
waves.center = center;
}
completion:nil];
現在,如果我添加其他動畫,說提出這個觀點的不同位置,「浮動」動畫停止。這是一個合理的反應,在完成塊中再次啓動「浮動」是沒有問題的。我只是想知道如果我錯過了某些東西,或許在動畫選項中,將兩者結合起來,不會相互打斷。
我能這樣做,如果第二動畫是基於CGAffineTransfromScale,他們結合沒有問題,但是當我移動視圖的中心是不是這樣的。
UPDATE:發現了一個bug性能。我有一個按鈕,調用負責使用動畫移動視圖中心的方法。如果在上一個動畫完成之前按下它太快,View只會捕捉到新的位置而沒有動畫,並且不會調用完成塊。以下是該方法的代碼:
- (void)wavesAnimationReversed:(BOOL)reversed {
CGFloat y = waves.frame.size.height*0.25;
y = reversed ? -y : y;
// CGFloat damping = reversed ? 1 : 0.65;
CGFloat damping = 1;
[UIView animateWithDuration:kWAVES_ANIMATION_DURATION
delay:0
usingSpringWithDamping:damping
initialSpringVelocity:0
options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut
animations:^{
CGPoint center = waves.center;
center.y += y;
waves.center = center;
}
completion:^(BOOL finished) {
[self handleStartWavesFloating];
}];
}
怎麼樣'UIViewAnimationOptionBeginFromCurrentState'標誌? – 2014-11-24 12:35:24
@GuyKogus不,不會做的伎倆 – NKorotkov 2014-11-24 12:55:47
關於你提到的更新,如果你不希望發生的卡,然後檢查是否'finished'是真實的(或'YES',相當)。另外,如果對變換進行動畫處理,那麼爲什麼不嘗試在動畫塊中使用'CGAffineTransfromTranslate'? – 2014-11-24 14:05:09