iOS 导航栏中的 UIButton 在执行变换动画后消失
iOS UIButton in Navigation bar disappears after performing transform animation
我正在尝试通过在单击时旋转它来制作从“+”按钮到 '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)
为什么在导航栏外这么容易,而在导航栏上却很难?我找不到解决方案。请帮忙
在 CABasicAnimation 上试试这一行:
rotateAnimation.removedOnCompletion = false
也许可以解决您的问题。
尝试在您的代码中添加以下几行,它会解决您的问题。
rotateAnimation.fillMode = kCAFillModeForwards
rotateAnimation.removedOnCompletion = false
我正在尝试通过在单击时旋转它来制作从“+”按钮到 '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)
为什么在导航栏外这么容易,而在导航栏上却很难?我找不到解决方案。请帮忙
在 CABasicAnimation 上试试这一行:
rotateAnimation.removedOnCompletion = false
也许可以解决您的问题。
尝试在您的代码中添加以下几行,它会解决您的问题。
rotateAnimation.fillMode = kCAFillModeForwards
rotateAnimation.removedOnCompletion = false