我想在父 View 中移动一个 View ,我正在使用 UIPanGestureRecognizer 移动 View 。我正在使用以下代码。
-(void)move:(UIPanGestureRecognizer *)recognizer {
CGPoint touchLocation = [recognizer locationInView:self.customeView];
self.view.center = touchLocation;
}
我想使用 locationInView 来移动 View 而不是 translationInView。谁能帮助我如何使用 locationInView 在父 View 中移动 View ?
最佳答案
UIPanGestureRecognizer
您走在正确的轨道上。您可能缺少开始和结束手势状态处理。这是一个完整的解决方案,我刚刚在示例项目 (Swift) 中将 panView 作为 View Controller Root View 的子类放在一起。
class ViewController: UIViewController {
@IBOutlet weak var panView: UIView!
// records the view's center for use as an offset while dragging
var viewCenter: CGPoint!
override func viewDidLoad() {
super.viewDidLoad()
panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.dragView)))
}
func dragView(gesture: UIPanGestureRecognizer) {
let target = gesture.view!
switch gesture.state {
case .began, .ended:
viewCenter = target.center
case .changed:
let translation = gesture.translation(in: self.view)
target.center = CGPoint(x: viewCenter!.x + translation.x, y: viewCenter!.y + translation.y)
default: break
}
}
}
关于ios - 使用 pangesture 在父 View 中移动 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41032492/