Tôi có chế độ xem hình vòng tròn và xoay vòng qua mã sau ghi đè touchesBegan(touches:, withEvent:)
và touchesMoved(touches:, withEvent:)
.Tính tốc độ quay và xoay vòng tự nhiên 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
}
Tôi muốn ghi đè touchesEnded(touches:, withEvent:)
để tính toán vận tốc và có chế độ xem tự động xoay một chút (tương tự như cuộn liên tục). Tôi hiện đang lưu biến đổi ban đầu và tính toán góc delta. Làm thế nào tôi có thể thực hiện điều này? Cảm ơn trước!
Vận tốc là khoảng cách chia cho thời gian vì vậy nếu bạn thêm một NSDate(). Timesince1970 trong touches của bạnBegan và trong chạm của bạnEnd bạn có thể tính toán sự khác biệt trong vài giây giữa sự kiện bắt đầu và kết thúc sự kiện. Khoảng cách chỉ là sqrt (dx^2 + dy^2). Hay đó không phải là vận tốc bạn đang tìm kiếm? Khác bị bệnh viết lại như là một câu trả lời dưới đây :) – Emptyless
Tôi đã tìm kiếm chỉ để xử lý di động cuộn để có nó tiếp tục di chuyển. Nếu người dùng nói di chuyển siêu nhanh và sau đó thực sự chậm và cho phép đi thì nó sẽ tiếp tục quay với tốc độ nhanh hơn tốc độ cuối cùng mà nó quay. Tôi đặt trọng tâm vào vận tốc trong câu hỏi, nhưng đó là tất cả về di chuyển động –