2015-02-05 123 views
1

我正在使用UIPanGestureRecognizer移動UIImageView。現在我需要檢查用戶是否在其他矢量PDF UIImageView中移動了我的對象。檢查其他視圖中的視圖?

例如,我們有紅色的酒吧,我們正在移動,我們需要在藍色酒吧內移動紅色酒吧(藍色酒吧是矢量PDF)。我們如何檢查?

示例圖片:http://i.imgur.com/PKXKHBi.png

示例代碼:的UIImageView的

@IBAction func moveRedBox(recognizer: UIPanGestureRecognizer) { 
    let translation = recognizer.translationInView(self.view) 
    recognizer.view!.center = CGPoint(x:recognizer.view!.center.x + translation.x, 
             y:recognizer.view!.center.y + translation.y) 
    recognizer.setTranslation(CGPointZero, inView: self.view) 

    if recognizer.state == UIGestureRecognizerState.Ended { 
     // Here we will check that redBox inside blueBox 
    } 
} 

回答

2

要檢查兩個視圖的重疊您可以使用CGRectIntersectsRect功能。

更新:剛剛發現,也有在斯威夫特

let doRectsIntersect = rect1.intersects(rect2) 
+0

這是一個很好的功能,但它只適用於矩形。如果有任何方法可以檢查矢量圖像嗎? – Vasily 2015-02-06 10:48:05

+0

嗯,不知道檢測矢量圖像的交集。 – Jawwad 2015-02-06 18:37:25

0

檢查位置

image.frame.origin.x >= view.frame.origin.x 
image.frame.origin.y >= view.frame.origin.y 

把這段代碼當運動完成

+0

這並不佔被遠遠的'view'右下角的'image'視圖。 – 2015-02-05 14:21:18

0

檢查了這一點上的CGRect的相交方法。這幫助了我:

if view1.frame.contains(view2.center) { 
    // do your thing 
    } 

完整的示例:

@IBAction func moveRedBox(recognizer: UIPanGestureRecognizer) { 

    ... 

    switch recognizer.state { 

    case .Ended: 

    if blueBox.frame.contains(recognizer.view!.center) { 
     print("Yep") 
    } 
    } 

}