Ich habe eine kreisförmige Ansicht und habe es über den folgenden Code drehen touchesBegan(touches:, withEvent:)
und touchesMoved(touches:, withEvent:)
.Berechnen Sie die Rotationsgeschwindigkeit und natürlich drehen Sie die Ansicht iOS
var deltaAngle = CGFloat(0)
var startTransform: CGAffineTransform?
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
let touchPoint = touches.first!.locationInView(view)
let dx = touchPoint.x - view.center.x
let dy = touchPoint.y - view.center.y
deltaAngle = atan2(dy, dx)
startTransform = arrowPickerView.transform
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?)
{
let touchPoint = touches.first!.locationInView(view)
let dx = touchPoint.x - view.center.x
let dy = touchPoint.y - view.center.y
let angle = atan2(dy, dx)
let angleDifference = deltaAngle - angle
let transform = CGAffineTransformRotate(startTransform!, -angleDifference)
arrowPickerView.transform = transform
}
Ich möchte touchesEnded(touches:, withEvent:)
außer Kraft zu setzen, die Geschwindigkeit zu berechnen und haben den Blick natürlich ein wenig (ähnlich kontinuierliches Scrollen) drehen. Ich speichere derzeit die ursprüngliche Transformation und berechne den Delta-Winkel. Wie kann ich das umsetzen? Danke im Voraus!
Die Geschwindigkeit ist die Entfernung geteilt durch die Zeit, also wenn Sie ein NSDate() .time1970 in Ihrem touchesBegan hinzufügen und in Ihrem touchEnd können Sie den Unterschied in Sekunden zwischen dem begin event und end event berechnen. Die Entfernung ist nur sqrt (dx^2 + dy^2). Oder ist das nicht die Geschwindigkeit, nach der Sie suchen? Sonst werde ich als Antwort unten nicht umschreiben :) – Emptyless
Ich wollte nur kinetisch scrollen, damit es weiter scrollt. Wenn der Benutzer sagt, scrollt super schnell und dann wirklich langsam und loslassen, dann wird es weiter mit einer Geschwindigkeit schneller als die letzte, die es rotiert drehte. Ich lege einen Schwerpunkt auf Geschwindigkeit in der Frage, aber es dreht sich alles um kinetisches Scrollen –