2016-02-02 5 views
0

Я работаю над приложением, которое использует UIPanGesturerecognizer к ходуUIView. У меня есть больше просмотров на моем экране, больше исправлено.Получить UIView от CGRect использованием UIPanGestureRecognizer - Swift 2,0

Вид, который я перетаскиваю с жестом, находится в цвете синий. Первый вид фиксируется цветом оранжевым цветом. Второй вид фиксируется зеленый цвет. Третий вид прикреплен к цвету Purple.

enter image description here

Мой фактический Swift код:

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 

     } 

    } 

} 

Моя проблема:

Когда View Синий находится на View Orange, то View Orange должен измените цвет фона на синий, например, t он «Синий».

То же самое происходит с Просмотреть зеленый и Просмотреть Фиолетовый.


То, что я пытаюсь сделать:

Я пытаюсь сделать функцию, которая распознает из данных CGRect, который вид снизу и возвращает UIView.

Возвращаясь к 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 
    } 
} 
Смежные вопросы