我想使用UIPushBehavior
爲屏幕上的視圖提供物理上逼真的動畫。但要做到這一點,我需要能夠計算CGVector
,屬性UIPushBehavior
中所需的推送量。UIKit Dynamics:計算UIPushBehavior所需的pushDirection
基本上,我知道視圖的大小,時間長度以及我希望它行進的距離。有沒有辦法使用帶有阻力的牛頓定義和UIDynamicItemBehavior
來精確計算在特定時間內將視圖移動到特定距離所需的量?
我想使用UIPushBehavior
爲屏幕上的視圖提供物理上逼真的動畫。但要做到這一點,我需要能夠計算CGVector
,屬性UIPushBehavior
中所需的推送量。UIKit Dynamics:計算UIPushBehavior所需的pushDirection
基本上,我知道視圖的大小,時間長度以及我希望它行進的距離。有沒有辦法使用帶有阻力的牛頓定義和UIDynamicItemBehavior
來精確計算在特定時間內將視圖移動到特定距離所需的量?
如果您使用的是平移手勢,你可以這樣做:
if (gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
CGPoint velocity = [gestureRecognizer velocityInView:gestureRecognizer.view.superview];
CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y));
myPushBehavior = [[UIPushBehavior alloc] initWithItems:@[gestureRecognizer.view]
mode:UIPushBehaviorModeInstantaneous];
myPushBehavior.pushDirection = CGVectorMake((velocity.x/10) , (velocity.y/10));
myPushBehavior.magnitude = magnitude;
}
不幸的是,這個答案是在我問這個問題2年後,我不再在項目中工作,所以我不能測試示例代碼來標記它是否正確。 但是,無論如何,謝謝你添加答案;希望它可以幫助別人! – jcoleman
我對此沒有太多的想法,阻力是UIDynamicItemBehavior實例中的一個屬性,您是否嘗試過? –