Что ж, это всего лишь пара «ответов из головы», но вы можете попробовать использовать этот метод (в UIScrollView
, из которых UITableView
является подклассом):
-(void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
Как только -(CGRect) rectForRowAtIndexPath:
даст вам координаты ячейки, вы можете анимировать ее местоположение. Но вместо того, чтобы вызывать его один раз, назовите его пару раз с меньшим смещением, затем с большим и большим смещением, а затем снова с меньшим. Я боюсь, что будет трудно заставить его выглядеть гладким.
Тем не менее, если это не сработает, возможно, сработает изменение значения contentOffset
внутри блока UIView animateWithDuration:delay:options:animations:completion
. Возможно, если вы используете UIViewAnimationOptionCurveEaseInOut, вы можете получить желаемый эффект, просто вызвав его один раз. Если нет, запустите несколько анимаций в каждой части пути и преодолевайте большие и большие расстояния, прежде чем замедляться.