2016-02-05 22 views
12

Tôi đang cố gắng di chuyển UIView trên cử chỉ trượt lên từ vị trí ban đầu đến vị trí cuối cùng cố định. Hình ảnh sẽ chuyển động bằng cử chỉ tay và không hoạt ảnh độc lập.Swift: di chuyển UIView trên cử chỉ trượt

Tôi chưa thử bất cứ điều gì vì tôi không biết bắt đầu từ đâu, lớp cử chỉ nào cần sử dụng.

enter image description here

Trả lời

16

Cuối cùng đã làm nó như dưới đây.

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

Chức năng sau đây được gọi khi cử chỉ được phát hiện, (ở đây tôi đang hạn chế quan điểm để có một centre.y tối đa 555, & Tôi đặt lại 554 khi di chuyển xem trước điểm nà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

Làm việc tốt :) – Bharathi

+0

Nhu cầu của đại biểu trong mã của bạn là gì ??? – SPatel

5

Bạn có thể muốn sử dụng một UIPanGestureRecognizer.

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

Và để kéo đối tượng duy nhất dọc theo trục 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, tôi sẽ cung cấp cho một shot. Cảm ơn. – Rao

+0

Yup, hiểu rồi. Tôi sẽ cố gắng và cho bạn biết. – Rao

2

cập nhật cho Swift 3.x

Khi gán bộ chọn, cú pháp đã thay đổi và bây giờ đòi hỏi #selector

let gesture = UIPanGestureRecognizer(target: self, action: #selector(navViewDragged(gesture:))) 

    self.navLayoutView.addGestureRecognizer(gesture) 
    self.navLayoutView.isUserInteractionEnabled = true 
    gesture.delegate = self 

Chức năng thực hiện:

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 

} 
Các vấn đề liên quan