可拖动的 UIView Swift 3 [英] Draggable UIView Swift 3
问题描述
我希望能够拖动屏幕上的对象,但它们不会.我什么都试过了,还是不行.
I want to be able to drag the objects on the screen, but they wont. I tried everything but still cant.
这是代码.
func panGesture(gesture: UIPanGestureRecognizer) {
switch gesture.state {
case .began:
print("Began.")
for i in 0..<forms.count {
if forms[i].frame.contains(gesture.location(in: view)) {
gravity.removeItem(forms[i])
}
}
case .changed:
let translation = gesture.translation(in: forms[1])
gesture.view!.center = CGPoint(x: gesture.view!.center.x + translation.x, y: gesture.view!.center.y + translation.y)
gesture.setTranslation(CGPoint.zero, in: self.view)
print("\(gesture.view!.center.x)=\(gesture.view!.center.y)")
print("t;: \(translation)")
case .ended:
for i in 0..<forms.count {
if forms[i].frame.contains(gesture.location(in: view)) {
gravity.addItem(forms[i])
}
}
print("Ended.")
case .cancelled:
print("Cancelled")
default:
print("Default")
}
}
它们也有重力.形式是正方形和圆形.
Also they have gravity. The forms are squares and circles.
说明:在 .began 中 - 我禁用所选形式的重力.在 .changed - 我尝试更改坐标.在 .end - 我再次启用重力.
Explanation: in .began - i disable the gravity for selected form. in .changed - i try to change the coordinates. in .end - i enable again gravity.
屏幕截图.
推荐答案
步骤 1 : 在 storyBoard 中选取一个你想要拖拽的 View.
Step 1 : Take one View which you want to drag in storyBoard.
@IBOutlet weak var viewDrag: UIView!
第 2 步:添加 PanGesture.
Step 2 : Add PanGesture.
var panGesture = UIPanGestureRecognizer()
第 3 步:在 ViewDidLoad 中添加以下代码.
Step 3 : In ViewDidLoad adding the below code.
override func viewDidLoad() {
super.viewDidLoad()
panGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.draggedView(_:)))
viewDrag.isUserInteractionEnabled = true
viewDrag.addGestureRecognizer(panGesture)
}
第 4 步:draggedView 的代码.
Step 4 : Code for draggedView.
func draggedView(_ sender:UIPanGestureRecognizer){
self.view.bringSubview(toFront: viewDrag)
let translation = sender.translation(in: self.view)
viewDrag.center = CGPoint(x: viewDrag.center.x + translation.x, y: viewDrag.center.y + translation.y)
sender.setTranslation(CGPoint.zero, in: self.view)
}
第 5 步:输出.
这篇关于可拖动的 UIView Swift 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!