2016-02-02 121 views
0

我正在使用的UIPanGesturerecognizer移動一個的UIView的應用程序。我有更多意見在我的屏幕上,更多固定獲取的UIView - 斯威夫特2.0

我將用手勢拖動的視圖顏色爲藍色。第一個視圖用橙色顏色固定。第二個視圖是用綠色顏色固定的。第三個視圖固定爲紫色顏色。

enter image description here

我的實際斯威夫特代碼:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var panView: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "panViewGesture:")) 
    } 

    func panViewGesture(sender: UIPanGestureRecognizer) { 

     let locationInView = sender.locationInView(self.view) 

     if sender.state == .Changed { 

      panView.frame.origin = locationInView 

     } 

    } 

} 

我的問題

查看藍是在查看橙色,則查看橙色應將背景顏色更改爲藍色,如t他'查看藍色'。

同樣的情況發生在查看綠色查看紫色


我想要做的事:

我試圖讓從它是從下面的視圖,並返回一個UIView的CGRect數據識別功能。

回到UIView,我可以很容易地改變背景顏色。


我需要什麼?

我需要一種語法,可以使視圖的認可,同時使用UIPanGestureRecognizer拖到另一個UIView的


有人可以幫助我重疊?

回答

2

使用此修改後的代碼:

class ViewController: UIViewController { 

    @IBOutlet var panView: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "panViewGesture:")) 
    } 

    func panViewGesture(sender: UIPanGestureRecognizer) { 

     let locationInView = sender.locationInView(self.view) 

     if sender.state == .Changed { 

      panView.center = locationInView 

      if let view = intersectingViewWithView(panView) { 
       view.backgroundColor = panView.backgroundColor 
      } 
     } 

    } 


    func intersectingViewWithView(panView: UIView) -> UIView? { 
     for view in self.view.subviews { 
      if view != panView { 
       if CGRectIntersectsRect(panView.frame, view.frame) { 
        return view 
       } 
      } 
     } 
     return nil 
    } 
}