Swift - Как заставить анимированную стрелку указывать в правильном направлении? - PullRequest
0 голосов
/ 08 января 2019

У меня есть две кнопки, которые при подключении показывают линию с анимированной стрелкой, чтобы показать, что они подключены. Проблема в том, что стрелка сама не вращается надлежащим образом, чтобы указывать в правильном направлении при анимации.

Как я могу повернуть стрелку, чтобы указывать в правильном направлении при движении?

class ViewController: UIViewController {

let line = CAShapeLayer()
let linePath = UIBezierPath()

var triangleImage = UIImage(named: "triangle" )
let startCoordinate = CGRect(x: 100, y: 100, width: 0, height: 0)

let btn1 = UIButton()
let btn2 = UIButton()

override func viewDidLoad() {
    super.viewDidLoad()

    btn1.createRectangleButton(buttonPositionX: 100, buttonPositionY: 100, buttonWidth: 80, buttonHeight: 40, buttonTitle: "", buttonTag: 0)
    btn2.createRectangleButton(buttonPositionX: 300, buttonPositionY: 400, buttonWidth: 80, buttonHeight: 40, buttonTitle: "", buttonTag: 1)

    view.addSubview(btn1)
    view.addSubview(btn2)


    let imageView = UIImageView(image: triangleImage)
    imageView.frame = CGRect(x:100, y:100, width: 20, height: 20)
    imageView.center = self.btn1.center
    view.addSubview(imageView)

    linePath.move(to: btn1.center)
    linePath.addLine(to: btn2.center)
    line.path = linePath.cgPath
    line.strokeColor = UIColor.red.cgColor
    self.view.layer.addSublayer(line)


    view.bringSubviewToFront(imageView)

    UIView.animate(withDuration: 3, delay: 0.0, options: [.repeat, .curveLinear], animations: {
        imageView.center = self.btn2.center
    }, completion: nil)
}

enter image description here

примечание: приведенный выше код будет немного отличаться от изображения

1 Ответ

0 голосов
/ 08 января 2019

Попробуйте это преобразование вращения

// rotation
imageView.transform = CGAffineTransform(rotationAngle: atan2(btn2.center.y - btn1.center.y, btn2.center.x - btn1.center.x) + CGFloat.pi / 2)
// used triangle image below

enter image description here

...