Я хочу создать круг, представляющий круговую диаграмму, и хочу, чтобы этот вид мог вращаться одним пальцем.Я уже создал некоторый код, который делает это, но у меня есть проблема.После поворота вида один раз, следующий пробный поворот помещает «круговую диаграмму» в то же положение, что и в начале.Другими словами, он не сохраняет позицию после поворота.
Ниже я показываю код, за которым уже следовал другой пост в стеке.Этот код был написан на 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)
}
Любая помощь будет принята с благодарностью.Спасибо