2014-01-31 3 views
2

У меня есть UIView, который прилагается к UICollisionBehavior. Я пытаюсь оживить свой центр, когда новое местоположение повернутым на экране, но это, кажется, используя этот блок кода не способ сделать это:UIKit Dynamics не позволяет мне анимировать центр UIView

[UIView animateWithDuration:0.7f 
          delay:0.0f 
         options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState 
        animations:^{ 
         [self.mainCharacter setCenter:location]; 
        } 
        completion:nil]; 

Может кто-нибудь предложить более UIKitDynamics дружественный способ делая это?

Спасибо.

UPDATE

Таким образом, первая часть моего вопроса была похожа на тот, публикуемые и возможный дубликат, однако, хотя технически это решается вопрос в первой части этого вопроса, действительно кажется препятствовать тому, как тестирование столкновения в UICollisionBehavior.

Вторая часть этого вопроса заключалась в том, чтобы спросить, есть ли лучший способ сделать это. Я предположил, что можно ускорить UIDynamicItem со скоростью в течение заданного времени, используя UIPushBehavior, но он кажется постоянным.

Может ли кто-нибудь порекомендовать использовать UIPushBehavior для выполнения вышеуказанных действий?

+0

Возможный дубликат [UIKit Dynamics с существующим аффинным преобразованием] (http://stackoverflow.com/questions/19338607/uikit-dynamics-with-existing-affine-transform) –

+0

См. Обновление –

ответ

1

В UIKit Dynamics, когда вы хотите оживить смену центра, вы должны добавить UISnapBehavior в свой UIDynamicAnimator (сначала удалив любое предыдущее поведение привязки). Например, создать свойство для UISnapBehavior, а затем ваш кран жест распознаватель может привязать его к этой точке (в честь вашего UICollisionBehavior), например, так:

- (void)handleTap:(UITapGestureRecognizer *)gesture 
{ 
    if (self.snap) 
     [self.animator removeBehavior:self.snap]; 

    CGPoint point = [gesture locationInView:gesture.view]; 
    UISnapBehavior *snap = [[UISnapBehavior alloc] initWithItem:self.viewToAnimate snapToPoint:point]; 
    [self.animator addBehavior:snap]; 

    self.snap = snap; 
} 

Вы можете контролировать «bounciness», регулируя damping недвижимости UISnapBehavior. Если вам не нравится, что он поворачивает вид, поскольку он щелкает, вы также можете добавить UIDynamicItemBehavior с allowsRotation, установленным в NO.

+0

Спасибо, это точно что я ищу. Я попробовал свой собственный метод из вашего комментария, но это не сработало, потому что я не добавлял/не удалял поведение на каждом кране. –

Смежные вопросы