2016-02-05 22 views
12

スライドアップジェスチャーのUIViewを初期位置から固定された最終位置に移動しようとしています。画像は手のジェスチャーで移動し、独立して動かす必要はありません。Swift:スライドジェスチャーでUIViewを移動

私はどこから始めるべきか分からないので、何も試していません。どのクラスを使用するのかはわかりません。

enter image description here

答えて

16

最後に、それは以下好きでした。ここ

let gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:")) 
slideUpView.addGestureRecognizer(gesture) 
slideUpView.userInteractionEnabled = true 
gesture.delegate = self 

ジェスチャーが検出されたときに、次の関数が呼び出されるが、(私はこの点を越え554に戻ったときにビューが移動をリセットするよ、&を555の最大centre.yを持つようにビューを制限していますセレクタを割り当てる場合)

func wasDragged(gestureRecognizer: UIPanGestureRecognizer) { 
    if gestureRecognizer.state == UIGestureRecognizerState.Began || gestureRecognizer.state == UIGestureRecognizerState.Changed { 
     let translation = gestureRecognizer.translationInView(self.view) 
     print(gestureRecognizer.view!.center.y) 
     if(gestureRecognizer.view!.center.y < 555) { 
      gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x, gestureRecognizer.view!.center.y + translation.y) 
     }else { 
      gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x, 554) 
     } 

     gestureRecognizer.setTranslation(CGPointMake(0,0), inView: self.view) 
    } 

} 
+0

うまく働いています:) – Bharathi

+0

あなたのコードに委任する必要はありますか? – SPatel

5

おそらくUIPanGestureRecognizerを使用します。

let gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:")) 
customView.addGestureRecognizer(gesture) 
gesture.delegate = self 

そして唯一のy軸に沿ってオブジェクトをドラッグする:

func wasDragged(gesture: UIPanGestureRecognizer) { 
    let translation = gesture.translationInView(self.view) 

    // Use translation.y to change the position of your customView, e.g. 
    customView.center.y = translation.y // Customize this. 
} 
+0

OK、私はこの打撃を与えるだろう。ありがとう。 – Rao

+0

うん、それを手に入れた。私はあなたに知らせようとします。 – Rao

2

スイフト3.xの更新

、構文が変更され、現在#selector

を必要としています

機能の実装:

func navViewDragged(gesture: UIPanGestureRecognizer){ 
    //Code here 
} 
-1
@IBAction func handlePanGesture(_ recognizer: UIPanGestureRecognizer) { 

    if MainView.bounds.contains(mainImage.frame) { 
     let recognizerCenter = recognizer.location(in: MainView) 

     mainImage.center = recognizerCenter 
    } 

    if MainView.bounds.intersection(mainImage.frame).width > 50 && MainView.bounds.intersection(mainImage.frame).height > 0 { 
     let recognizerCenter = recognizer.location(in: MainView) 
     print(recognizerCenter) 
     mainImage.center = recognizerCenter 
    } 

} 

@IBAction func handlePinchGesture(_ recognizer: UIPinchGestureRecognizer) { 

    mainImage.transform = mainImage.transform.scaledBy(x: recognizer.scale, y: recognizer.scale) 
    recognizer.scale = 1.0 
} 

@IBAction func handleRotateGesture(_ recognizer: UIRotationGestureRecognizer) { 

    mainImage.transform = mainImage.transform.rotated(by: recognizer.rotation) 
    recognizer.rotation = 0.0 

} 
関連する問題