我想在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?感谢
答案 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)
}
}