我正在處理一箇舊項目並想擺脫POP framework我確信任何動畫都可以用本機iOS框架完成。從`POPSpringAnimation`移植到Swift 4中的本機iOS框架
這裏是舊代碼:
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewFrame];
springAnimation.toValue = [NSValue valueWithCGRect:rect];
springAnimation.velocity = [NSValue valueWithCGRect:CGRectMake(springVelocity, springVelocity, 0, 0)];
springAnimation.springBounciness = springBounciness;
springAnimation.springSpeed = springSpeed;
[springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
if (finished) {
// cool code here
}
}];
[self.selectedViewController.view pop_addAnimation:springAnimation forKey:@"springAnimation"];
我曾嘗試:
[UIView animateWithDuration:1.0
delay:0
usingSpringWithDamping:springBounciness
initialSpringVelocity:springVelocity
options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.selectedViewController.view.frame = rect;
} completion:^(BOOL finished) {
// cool code here
}];
但是,我得到了相同的結果,有些問題上升:
- 是
springBounciness
在彈出相當於usingSpringWithDamping
? - 什麼是
springSpeed
的相當於UIView
的動畫? - 持續時間是多少,
POPSpringAnimation
的持續時間是多少?
編輯: 關於第三個問題,我在Github發現了一個issue。
如果UIView
不是可以使用Core Animation或任何其他iOS本機動畫框架完成的嗎?
波普爾正在使用特殊的求解器來決定抑制。你可能會更接近CASpringAnimation,但Pop很難被擊敗。特別是具有可中斷性。 – agibson007
很抱歉評論,但解決方案在這種情況下解決持續時間。問題1也是。我認爲2是阻尼和初始速度的組合。 3.求解器使用衰減和查看大小以及春天的反彈來解決持續時間。 – agibson007
@iosgeek請檢查我的答案。 TY。 – GeneCode