在Swift我们可能都使用过self.iconView.transform.rotated(by: CGFloat(2*Double.pi)),这个代码,然而如果我们直接这么写,这个view是不会旋转的,因为这个旋转动画的特点就是顺时针优先的原则和就近原则,比如你正好让它转一圈,它觉得呆着不动挺好了,就不会去转了,这个时候如果我们稍微改变下旋转的角度就不一样了,还有就是如果我们想要改变旋转控件的方向应该怎么改?其实运用下就近原则就可以了。
代码如下所示
UIView.animate(withDuration: 0.5) {
//设置旋转的角度
var angle = CGFloat(Double.pi)
//如果rotateFlag为真也就是下拉的时候让它的角度加一点点,这样就会选择近一点的逆时针的转上来
//如果rotateFlag为假的时候,让它转的角度减那么一点点,这样它
//做的标记,判断是要往那边转方向
angle+=self.rotateFlag ? 0.0000001:-0.0000001
self.iconView.transform = self.iconView.transform.rotated(by:angle)
}
效果图如下所示,从右边上来的