方案:我有一个“>”按钮:
应该在初次点击时设置+90度的动画:
但是,通过再次点击 UITableViewCell 返回0度'>'位置后,它将返回其原始高度;然后再次点击我会旋转到'<'位置:
如何将最大旋转角度冻结到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()
}
})
}
答案 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()
}
}