我有一個非常簡單的UIView動畫,這導致我的觀點爲「悸動」:返回查看到原來的位置結束時的UIView動畫
[UIView animateWithDuration:0.2 delay:0.0f options:UIViewAnimationOptionAllowUserInteraction+UIViewAnimationOptionRepeat+UIViewAnimationOptionAutoreverse animations:^{
CGAffineTransform transf = CGAffineTransformScale(self.view.transform, 1.05f, 1.05f);
[self.view setTransform:transf];
} completion:nil];
在一些點,用戶點擊一個按鈕,取消動畫,應用新的變換。
[self.view.layer removeAllAnimations];
[self.view setTransform:aNewTransform];
我希望它重置爲原始變換,但它的尺寸增加了5%。
編輯:我試着添加一個完成塊,將轉換重置到它的原始位置。這會起作用,但會導致我立即運行的變換被踐踏...完成塊在我應用aNewTransform
後運行。
編輯2:我找到了一個解決方案,使用CABasicAnimation,而不是UIView動畫。如果有人找到使用UIView動畫的解決方案,我仍然會感興趣...我更喜歡基於塊的界面。這也僅適用於我,因爲我碰巧跟蹤了應用於視圖的範圍值和範圍值。改變規模使用的一切也改變self.scale
我更換動畫的方法:
CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
basicAnimation.toValue = [NSNumber numberWithFloat:self.scale*1.05f];
basicAnimation.fromValue = [NSNumber numberWithFloat:self.scale];
basicAnimation.autoreverses = YES;
basicAnimation.duration = 0.2;
basicAnimation.repeatCount = HUGE_VALF;
[self.view.layer addAnimation:basicAnimation forKey:@"Throb"];
將無法工作。 aNewTransform是假想的,可以是多種不同的轉換,具體取決於使用哪個按鈕。直到我刪除動畫纔會知道。 –