Я не уверен, что это лучший способ, но я бы предложил использовать квадратные кривые Безье и некоторую форму анимации для рисования разных кривых в каждом кадре.Вам нужно настроить анимацию, используя NSTimer или что-то еще, а затем вызывать setNeedsRedisplay
для объекта, который рисует «круг» каждый раз, когда запускается таймер, также обновляя текущий временной шаг объекта рисования анимациипоэтому он знает, какой кадр нужно рассчитать и нарисовать.
При каждом перерисовке необходимо выполнить расчет, чтобы нарисовать требуемую кривую, необходимую для продвижения на шаг вперед в анимации.Вы можете использовать кварцевый метод CGContextAddQuadCurveToPoint()
, чтобы нарисовать кривую.Вам понадобятся две кривые для завершения всего эффекта (одна будет использоваться для первой половины анимации, а другая будет использоваться для второй половины).
Надеюсь, это даст несколько начальных мыслей.