Переместить объект пальцем по траектории [Swift]

У меня есть круг, на мой взгляд, с небольшим овалом, который можно перемещать по этому большому кругу, идея перемещения маленького овала состоит в том, чтобы изменить время на часах. Я пытаюсь переместить овал, но только следуя по пути, чтобы он не вышел из круга. Как будто это была железная дорога, и поезд следует только по железной дороге, но в то же время следует за положением пальца. Здесь я прикрепляю изображение

Я попытался создать анимацию, и, возможно, использовать эту анимацию, чтобы затем следовать за пальцем. Я действительно не знаю, как это сделать. Любая помощь, пожалуйста?

Вот мой код для анимации (это не работает):

let customPath = UIBezierPath()
    customPath.move(to: CGPoint.init(x: 160, y: 165))
    customPath.addLine(to: CGPoint.init(x: 260, y: 245))
    customPath.addLine(to: CGPoint.init(x: 165, y: 365))
    customPath.addLine(to: CGPoint.init(x: 60, y: 260))

    let movingImage = UIImage(named: "MoveOval")
    let movingLayer = CALayer()
    movingLayer.anchorPoint = CGPoint.zero
    movingLayer.contents = moveOval
    movingLayer.frame = CGRect.init(x: 0.0, y: 0.0, width: (movingImage?.size.width)!, height: (movingImage?.size.height)!)
    self.view.layer.addSublayer(movingLayer)

    let pathAnimation = CAKeyframeAnimation(keyPath: "anim")
    pathAnimation.duration = 4.0
    pathAnimation.path = customPath.cgPath
    pathAnimation.calculationMode = kCAAnimationLinear
    movingLayer.add(pathAnimation, forKey: "anim")

0 ответов

Другие вопросы по тегам