Как повернуть UIView, используя метод CGAffineTransform и Touch Gesture - PullRequest
0 голосов
/ 27 января 2019

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

Ниже я показываю код, за которым уже следовал другой пост в стеке.Этот код был написан на Swift 3, и я использую Swift 4, и в предыдущей версии была еще одна функция.

image.transform = CGAffineTransformRotate(tempTransform, deltaAngle)

Это больше не доступно для нового издания, поэтому я немного растерялся.

var xOffSet:CGVector = CGVector(dx: 0, dy: 0)
var yOffSet:CGVector = CGVector(dx: 0, dy: 0)
var origin:CGPoint = CGPoint.zero
var tempTransform=CGAffineTransform()
var startingAngle:CGFloat?


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    print("began")
    origin = (touches.first?.location(in: self.view))!
    print(origin)
    print(image.center.x)
    print(image.center.y)
    xOffSet = CGVector(dx:(origin.x)-image.center.x, dy:(origin.y) - image.center.y)

    startingAngle = atan2(xOffSet.dy,xOffSet.dx)

    print(startingAngle)
    //save the current transform
    tempTransform = image.transform

}


override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    print("move")
    let touchPoint = touches.first?.location(in: self.view)

    yOffSet = CGVector(dx:touchPoint!.x - image.center.x, dy:touchPoint!.y - image.center.y)

    let angle = atan2(yOffSet.dy,yOffSet.dx)

    print(angle)
    let deltaAngle = angle - startingAngle!

    print(deltaAngle)
    image.transform = CGAffineTransform(rotationAngle: deltaAngle)

}

Любая помощь будет принята с благодарностью.Спасибо

...