Я имел дело с чем-то вроде этого в прошлом, и решение не изящное, но оно работает.
По сути, вам нужно сделать некоторую математику, чтобы вычислить, где на экране находится строка. Затем настройте его на основе свойства y
contentOffset
вашего UITableView
.
Вы можете сделать это так:
[myView convertPoint:localPosition toView:nil];
Тогда вы бы построили новый UIView
, который идентичен вашему взгляду. Установите его рамку так, чтобы она находилась прямо над UITableViewCell
, который вы пытаетесь переместить. Добавьте его в качестве подпредставления основного приложения UIWindow
.
Вы захотите установить userInteractionEnabled
или scrollEnabled
на NO
на вашем UITableView
, пока все это происходит, чтобы пользователь не мог изменить положение вещей на протяжении всего процесса (просто не забудьте установить его обратно на YES
, когда все будет сделано, анимация).
Затем оживите его до новой позиции, однако имеет смысл.
Я понимаю, что вам, возможно, придется прокручивать UITableView
в процессе всего этого, что значительно усложняет ситуацию, но вы можете оживить и эту прокрутку.
Вам, конечно, придется выполнять аналогичные операции с анимацией строки от до , если это необходимо в вашем приложении.
Как я уже сказал, это не легко и не красиво. Но я действительно понимаю, что вы пытаетесь достичь, и я думаю, что эффект супер, когда он выполняется правильно.
Если у кого-то есть лучшее представление о том, как осуществить это, не сходя с ума, я бы хотел знать, но этот тип реализации - лучшее, что я смог сделать.