我正在尝试通过在单击时旋转它来动画从“+”按钮到“X”按钮的转换。
当我在 UIView 上使用标准按钮时,一切都很好。我正在使用以下代码:
UIView.animateWithDuration(2.0, delay: 0.0, options: .CurveEaseOut, animations: {
let transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))
self.navigationPlusButton.transform = transform
}, completion: nil)
当我尝试使用导航栏中的按钮实现相同功能时,就会出现问题。
看起来按钮高度在旋转之前被调整为 0,我不知道如何修复导航按钮的大小,因为没有约束定义。注意故事板
和约束
注意:第二种方法很好地使用了CABasicAnimation旋转按钮,但它在动画结束后立即将其返回到初始状态。我想保持“X”,直到我再次点击。
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = CGFloat(M_PI_4)
rotateAnimation.duration = 2.0
self.navigationPlusButton.layer.addAnimation(rotateAnimation, forKey: nil)
它如何在导航栏之外如此轻松地工作,而在导航栏上却如此难以做到?我找不到解决方案。请帮忙