我希望能够拖动屏幕上的对象,但它们不会。我什么都试过了,但还是不行。
这是代码。
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")
}
}
它们也有引力。形式是正方形和圆形。
解释: 在 .began - 我禁用所选表单的重力。 在 .changed - 我尝试更改坐标。 在 .end - 我再次启用重力。
屏幕截图。
最佳答案
第 1 步:取一个要拖到 Storyboard中的 View 。
@IBOutlet weak var viewDrag: UIView!
第 2 步:添加 PanGesture。
var panGesture = UIPanGestureRecognizer()
第 3 步:在 ViewDidLoad 中添加以下代码。
override func viewDidLoad() {
super.viewDidLoad()
panGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.draggedView(_:)))
viewDrag.isUserInteractionEnabled = true
viewDrag.addGestureRecognizer(panGesture)
}
第 4 步: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 步: 输出。
关于ios - 可拖动的 UIView Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43714948/