2017-02-18 61 views

回答

0
// The Pan Gesture 
func createPanGestureRecognizer(targetView: UIImageView) 
{ 

    var panGesture = UIPanGestureRecognizer(target: self, action:("handlePanGesture:")) 
    targetView.addGestureRecognizer(panGesture) 
} 

// THE HANDLE 

    func handlePanGesture(panGesture: UIPanGestureRecognizer) { 


    //  get translation 

    var translation = panGesture.translationInView(view) 
    panGesture.setTranslation(CGPointZero, inView: view) 
    println(translation) 


    //create a new Label and give it the parameters of the old one 
    var label = panGesture.view as UIImageView 
    label.center = CGPoint(x: label.center.x+translation.x, y: label.center.y+translation.y) 
    label.multipleTouchEnabled = true 
    label.userInteractionEnabled = true 

    if panGesture.state == UIGestureRecognizerState.Began { 

     //add something you want to happen when the Label Panning has started 
    } 

    if panGesture.state == UIGestureRecognizerState.Ended { 

     //add something you want to happen when the Label Panning has ended 

    } 


    if panGesture.state == UIGestureRecognizerState.Changed { 

    //add something you want to happen when the Label Panning has been change (during the moving/panning) 

    } 

    else { 

     // or something when its not moving 
    } 

    } 
2

您可以通過檢查它們的幀是否相交來檢查是否有相交的2個視圖。這裏有一個例子:

let view1 = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 
let view2 = UIView(frame: CGRect(x: 90, y: 90, width: 50, height: 50)) 

extension UIView { 
    func intersects(_ otherView: UIView) -> Bool { 
     if self === otherView { return false } 
     return self.frame.intersects(otherView.frame) 
    } 
} 

print(view1.intersects(view2)) // Prints true because the 2 views are intersecting 

您可以撥打intersects(_:)每次更新任何意見幀(即改變它們的大小和/或位置)。如果方法返回true,請使用UIAlertController顯示警報。

4

怎麼樣

if (CGRectIntersectsRect(secondView.frame, sender.frame)) { 
     // Do something 
    }