Перемещение UIView с замедлением

Мне нужно нажать и перетащить UIView на экран с замедлением. Я очень хорошо написал код для перемещения вида прикосновениями, но нужно, чтобы объект продолжал двигаться с определенной степенью инерции (при достижении определенного порога ускорения), замедляясь, пока не остановится или не встретит границу экрана. Это не для игры, а с использованием некоторых стандартных элементов управления UIView. Самая большая часть, с которой я борюсь, - это ускорение.

Какие-нибудь хорошие алгоритмы, которые вы написали для достижения того же?

Редактировать:

Я использую блок анимации на touchesEnded: метод, но есть заметная задержка между моментом, когда человек отпускает палец и начинается анимация:

[UIView transitionWithView:self 
                  duration:UI_USER_INTERFACE_IDIOM() == 
                               UIUserInterfaceIdiomPhone ? 0.33f : 0.33f * 2.0f
                   options:UIViewAnimationCurveEaseOut 
                animations:^(void){
                        if (dir == 1)   //  Flicked left
                        {
                            self.center = CGPointMake(self.frame.size.width * 0.5f,
                                                      self.center.y);
                        }
                        else {  //  Flicked right
                            self.center = CGPointMake(
                                self.superview.bounds.size.width - 
                                  (self.frame.size.width * 0.5f), self.center.y);
                        }
                     } 
                completion:^(BOOL finished){
                     // Do nothing
                }];
5
задан Wayne Hartman 9 March 2011 в 05:46
поделиться