如何用动画结束UILongPressGestureRecognizer?

时间:2015-09-07 06:57:51

标签: ios swift animation uiimageview uigesturerecognizer

我使用override func viewDidAppear(animated: Bool) { var longPress = UILongPressGestureRecognizer(target: self, action: Selector("longPress")) imageView.addGestureRecognizer(longPress) imageView.userInteractionEnabled = true } func longPress() { let bounds = self.imageView.bounds UIView.animateWithDuration(0.5, animations: { self.imageView.bounds = CGRect(x: bounds.origin.x, y: bounds.origin.y, width: bounds.size.width + 22, height: bounds.size.height + 22) }) println("user pressed on image") } 动画了一个UIImageView,如下所示:

    SELECT 
        "PIPPO"  
    FROM 
        "PLUTO"
    WHERE
    "PIPPO" LIKE '%*8'

动画只会导致UIImageview的高度和宽度在longPress上展开,但是当释放按下时,边界会继续增长。当按下时,如何将UIImageView的边界返回到原点宽度和高度被释放?

1 个答案:

答案 0 :(得分:3)

试试这个:

var oldbounds:CGRect!
@IBOutlet var image: UIImageView!
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func viewDidAppear(animated: Bool) {

    var longPress = UILongPressGestureRecognizer(target: self, action: Selector("longPress:"))
    longPress.minimumPressDuration = 0.01
    image.addGestureRecognizer(longPress)
    image.userInteractionEnabled = true
}

func longPress(gesture:UILongPressGestureRecognizer)
{
    if gesture.state == UIGestureRecognizerState.Began
    {
        oldbounds = self.image.bounds
    }
    else if gesture.state == UIGestureRecognizerState.Changed
    {
        let bounds = self.image.bounds
        UIView.animateWithDuration(0.5, animations: {
            self.image.bounds = CGRect(x: bounds.origin.x, y: bounds.origin.y, width: bounds.size.width + 22, height: bounds.size.height + 22)
        })

        println("user pressed on image")
    }
    else
    {
        let bounds = self.image.bounds
        UIView.animateWithDuration(0.5, animations: {
            self.image.bounds = self.oldbounds
        })

        println("user release on image")
    }
}
相关问题