2014-02-16 68 views
3

我想使用UIPushBehavior爲屏幕上的視圖提供物理上逼真的動畫。但要做到這一點,我需要能夠計算CGVector,屬性UIPushBehavior中所需的推送量。UIKit Dynamics:計算UIPushBehavior所需的pushDirection

基本上,我知道視圖的大小,時間長度以及我希望它行進的距離。有沒有辦法使用帶有阻力的牛頓定義和UIDynamicItemBehavior來精確計算在特定時間內將視圖移動到特定距離所需的量?

+0

我對此沒有太多的想法,阻力是UIDynamicItemBehavior實例中的一個屬性,您是否嘗試過? –

回答

0

如果您使用的是平移手勢,你可以這樣做:

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; 
} 

禮貌的Tony Dahbura's tutorial

+0

不幸的是,這個答案是在我問這個問題2年後,我不再在項目中工作,所以我不能測試示例代碼來標記它是否正確。 但是,無論如何,謝謝你添加答案;希望它可以幫助別人! – jcoleman