Мне нужно нажать и перетащить 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
}];