2017-11-07 7 views
0

複数のUIviewsを別のUIviewsまたはUIimagesViewcontrollerにドラッグする必要があるパズルゲームに取り組んでいます。Swift 4のビューコントローラで複数のuiviewを別のuiviewまたはimageにドラッグする方法

ここには、1つのuiview draggableのlinkがあります。

このプログラムでは、ただ1つのUIviewがドラッグ可能です。今度は、私がドラッグできる人にUIviewsを追加します。

import UIKit 

class GameViewController: UIViewController, UIGestureRecognizerDelegate, UITextFieldDelegate { 

@IBOutlet weak var viewDrag: UIView! 

var panGesture = UIPanGestureRecognizer() 

override func viewDidLoad() { 
super.viewDidLoad() 
panGesture = UIPanGestureRecognizer(target: self, action: #selector(GameViewController.draggedView(_:))) 
viewDrag.isUserInteractionEnabled = true 
viewDrag.addGestureRecognizer(panGesture) 
viewDrag.backgroundColor = UIColor.green 
} 

override func didReceiveMemoryWarning() { 
super.didReceiveMemoryWarning() 
// Dispose of any resources that can be recreated. 
} 

@objc 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) 
} 
} 

ここviewcontroller

enter image description here

答えて

0

UIimageにドラッグ可能である白色正方形UIviewのイメージがある私はあなたのための簡単な例を行いました。これは完全な例ではありません

/// Moves A Draggable Object Around The Screen 
/// 
/// - Parameter gesture: UIPanGestureRecognizer 
@objc func moveObject(_ gesture: UIPanGestureRecognizer){ 

    //1. Check That We Have A Valid Draggable View 
    guard let draggedObject = gesture.view else { return } 

    if gesture.state == .began || gesture.state == .changed { 

     //2. Set The Translation & Move The View 
     let translation = gesture.translation(in: self.view) 
     draggedObject.center = CGPoint(x: draggedObject.center.x + translation.x, y: draggedObject.center.y + translation.y) 
     gesture.setTranslation(CGPoint.zero, in: self.view) 


    }else if gesture.state == .ended { 

    } 
} 

:これらのビューは、次のコードにより、ドラッグ可能作られています

/// Creates A Row Of 5 Draggable UIViews 
func createDraggableViews(){ 

    //1. Determine The Size Of The Draggable View 
    let viewSize = CGSize(width: 50, height: 50) 

    //2. Create Padding Between The Views 
    let padding: CGFloat = 10 

    //2. Create 5 Draggable Views 
    for i in 0 ..< 5{ 
     print((CGFloat(i) * viewSize.width) + 10) 
     let draggableView = UIView(frame: CGRect(x: 10 + (CGFloat(i) * viewSize.width) + (CGFloat(i) * padding), y: 100, 
               width: viewSize.width, height: viewSize.height)) 
     draggableView.backgroundColor = .purple 

     //2a. Create A Pan Gesture Recognizer So The View Can Be Moved 
     let panGesture = UIPanGestureRecognizer(target: self, action: #selector(moveObject(_:))) 
     draggableView.addGestureRecognizer(panGesture) 

     //2b. Add The Draggable View To The Main View 
     self.view.addSubview(draggableView) 
    } 

} 

の例では、私は5つのドラッグUIViewsを作成する機能を作成しましたしかし、うまくいけばそれはあなたのための良い出発点になります^ ______ ^。

関連する問題