我有一个要制作动画的按钮,以表示某种下拉菜单效果。类似于这里看到的
https://medium.com/@phillfarrugia/building-a-tinder-esque-card-interface-5afa63c6d3db
我使用了CGAffineTransform属性并将度数转换为弧度以正确旋转。但是,当我以其他方式旋转它时,问题就来了。它没有回退它的方向,只是做了一些笨拙的翻转回到相同位置。
谁能帮助我重新创建在我提供的链接中看到的更平滑的过渡
这是我当前的代码。
@objc func showCalendarPressed(){
print("show calendar pressed")
//will check if there has been any animation work done on the UIVIEW
if self.showCalendar.transform == .identity {
UIView.animate(withDuration: 1.5) {
self.showCalendar.transform = CGAffineTransform(rotationAngle: self.radians(degrees: 180) )
}
}else {
//there is a transform on it and we need to change it back
UIView.animate(withDuration: 0.5, animations: {
//will remove the transform and animate it back
self.showCalendar.transform = .identity
}) { (true) in
}
}
}
弧度函数
func radians(degrees: Double) -> CGFloat{
return CGFloat(degrees * .pi / 180)
}
答案 0 :(得分:0)
您正精确地绕过1/2步(取决于您对radians
的转换,可能会稍微多一点),当您返回.identity
时,它会保持相同的方向,因为距离越近(旋转最少的方向)。最初尝试使用稍小的角度。我发现这可行:
替换:
self.radians(degrees: 180)
具有:
self.radians(degrees: 179.999)
通过略微小于1/2的距离(这是不可察觉的),返回.identity
将会旋转它的方向。