如何制作重复动画和连续动画?

时间:2019-04-24 18:04:03

标签: uiview uianimation

方案:我有一个“>”按钮:

enter image description here

应该在初次点击时设置+90度的动画:

enter image description here

但是,通过再次点击 UITableViewCell 返回0度'>'位置后,它将返回其原始高度;然后再次点击我会旋转到'<'位置:

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 :(得分:0)

在以后点击以旋转图标之前,我需要重置'>'图像的转换。
为此,我根据Matt的建议将其转换设置为“身份”。

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

这是通过UITableViewDelete的willDisplay函数触发的:

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