Анимация Longpress на UITableViewCell с цветом фона

Вопрос:

Я хочу оживить мой UITableViewCell на Longpress.

Когда пользователь начинает удерживать ячейку, он должен получить светло-зеленый цвет – после удержания на клетке цвет должен стать более интенсивным до темно-зеленого, а затем запустить событие и Longpressgesture.

Это мой обычный распознаватель Longpress Recognizer

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

longPress.minimumPressDuration = 2;


func respondToLPGesture(gesture: UIGestureRecognizer) {

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

}
}

Нужно ли установить минимальное значениеPressDuration на 0,1 секунды, а затем добавить дополнительное время ожидания? Или как я могу справиться с этим быстро? благодаря

Лучший ответ:

Способ работы UILongPressGestureRecognizer состоит в том, что после того, как minimumPressDuration будет minimumPressDuration, данный селектор будет повторно minimumPressDuration с разными состояниями.

Прежде всего, ваш метод будет запущен с состоянием UIGestureRecognizerStateBegan. Это когда вы начнете окрашивать свою ячейку. Я бы посоветовал в этот момент хранить время с CACurrentMediaTime().

Затем ваш метод будет запущен с состоянием UIGestureRecognizerStateChanged. Здесь вы можете проверить текущий CACurrentMediaTime() сравнению с тем, который вы сохранили в начале, и использовать дельта, чтобы рассчитать интенсивность цвета зеленого цвета, который вы хотели бы.

Длительный жест нажатия заканчивается состоянием, если UIGestureRecognizerStateEnded и именно здесь вы можете выполнить обработку завершения.

ТАК:

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)
    }
}

Оцените статью
TechArks.Ru
Добавить комментарий