使用背景颜色在UITableViewCell上设置Animate Longpress

时间:2014-07-23 08:27:54

标签: swift

我想在Longpress上为我的UITableViewCell制作动画。

当用户开始按住一个单元格时,它应该呈现浅绿色 - 在按住单元格后,颜色应该变得更加强烈到深绿色,然后触发一个事件并且Longpressgesture完成。 / p>

这是我常用的Longpress识别器

// In the viewDidLoad
    var longPress = UILongPressGestureRecognizer(target: self, action: "respondToLPGesture:")

    longPress.minimumPressDuration = 2;


func respondToLPGesture(gesture: UIGestureRecognizer) {

    if(gesture.state == UIGestureRecognizerState.Began) {

    }
}

我是否需要将minimumPressDuration设置为0.1秒然后再添加一个等待时间?或者我如何处理swift?感谢

1 个答案:

答案 0 :(得分:2)

UILongPressGestureRecognizer的工作方式是在minimumPressDuration被点击后,给定的选择器将以不同的状态反复触发。

首先,您的方法将使用状态UIGestureRecognizerStateBegan触发。这时您将开始着色您的细胞。 我建议此时用CACurrentMediaTime()存储时间。

然后将使用状态UIGestureRecognizerStateChanged触发您的方法。在这里,您可以检查当前CACurrentMediaTime()与您在开头存储的那个,并使用增量来计算您想要的绿色的强度。

长按手势将以状态UIGestureRecognizerStateEnded结束,并且您可以在此处完成处理。

SO:

func respondToLongPressGesture(gesture: UILongPressGestureRecognizer)
{
    switch gesture.state
    {
        case .Began:
            self.beginPressTime = CACurrentMediaTime()
        case .Changed:
            var deltaTime = CACurrentMediaTime() - self.beginPressTime
            var greenColor = self.greenColourForTimeDelta(deltaTime)
            gesture.view.backgroundColor = greenColor
        case .Ended:
            self.gestureDidFinish(gesture)
    }
}