![](/img/trans.png)
[英]Swift - PanGesture Recognizer - move with object - speed of movement
[英]Change pangesture speed swift
是否可以減慢平移手勢,使其以較低的速度移動。
這是我用來移動 3d 對象的代碼
@objc func handlePan(gestureRecognize: UIPanGestureRecognizer) {
let numberOfTouches = gestureRecognize.numberOfTouches
let translation = gestureRecognize.translation(in: gestureRecognize.view!)
var widthRatio = Float(translation.x) / Float(gestureRecognize.view!.frame.size.width) - lastWidthRatio
if (numberOfTouches == fingersNeededToPan) {
// WIDTH constraints
if(widthRatio >= maxWidthRatioRight) {
widthRatio = maxWidthRatioRight
}
if(widthRatio <= maxWidthRatioLeft) {
widthRatio = maxWidthRatioLeft
}
self.artRoomScene.boxnode.eulerAngles.y = Float(2 * Double.pi) * widthRatio
//for final check on fingers number
lastFingersNumber = fingersNeededToPan
}
lastFingersNumber = (numberOfTouches>0 ? numberOfTouches : lastFingersNumber)
if (gestureRecognize.state == .ended && lastFingersNumber==fingersNeededToPan) {
lastWidthRatio = widthRatio
}
}
"sender.velocityInView(self.view) 為您提供每秒像素的速度。為了獲得准確的速度,您需要將速度除以 60 將速度更改為每分鍾像素,如下所示:
sender.velocityInView(self.view).x / 60 - 水平
sender.velocityInView(self.view).y / 60 - 垂直
因此,您可以通過添加初始值來更新位置,如下所示:
var initialLocation: CGPoint? -> 全球
initialLocation.x = (initialLocation ?? 0)
(initialLocation.x)! = (initialLocation.x)! + (sender.velocity(in: colorSlider!).x / 60) - 水平
(initialLocation.y)! = (initialLocation.y)! + (sender.velocity(in: colorSlider!).y / 60) - 垂直
謝謝。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.