Как получить повторение и непрерывную анимацию? - PullRequest
0 голосов
/ 24 апреля 2019

Сценарий: у меня есть кнопка '>':

enter image description here

, которая должна анимироваться на +90 градусов при первом нажатии:

enter image description here

Однако после возврата в положение «>» на 0 градусов, снова нажав UITableViewCell , который вернется к своей первоначальной высоте;затем, нажимая СНОВА, я получаю еще один поворот в положение «<»: <p>enter image description here

Как заморозить максимальное вращение только до 90 градусов (указываявниз);чтобы у меня был один поворот на +/- 90 градусов?

Вот мой код:

 func rotate2ImageView() {
        UIView.animate(withDuration: 0.3) {
            self.rightArrowImage.transform = self.rightArrowImage.transform.rotated(by: .pi / 2)
        }
    }

Вот неудачное лекарство (где я пытался удалить все анимации):

func rotateImageView(){
        UIView.animate(withDuration: 0.3, animations: {() -> Void in
            self.rightArrowImage.transform = self.rightArrowImage.transform.rotated(by: .pi / 2)
        }, completion: {(_ finished: Bool) -> Void in
            if finished {
               self.rightArrowImage.layer.removeAllAnimations()
            }
        })
    }

1 Ответ

0 голосов
/ 25 апреля 2019

Мне нужно было сбросить преобразование изображения «>» до будущих нажатий, чтобы повернуть значок.Я сделал это, установив его преобразование в 'identity' в соответствии с предложением Мэтта.

 func rotateImageView() {
        // Reset any pending transformation to original status:
        rightArrowImage.transform = .identity

        UIView.animate(withDuration: 0.3) {
            self.rightArrowImage.transform = self.rightArrowImage.transform.rotated(by: .pi / 2)
        }
    }

Это запускается каждый раз с помощью функции willDisplay UITableViewDelete:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let myCell = cell as? CommonFAQCell
        if expandCell {
            myCell?.rotateImageView()
        }
    }
...