导航栏中的iOS UIButton在执行变换动画后消失
Posted
技术标签:
【中文标题】导航栏中的iOS UIButton在执行变换动画后消失【英文标题】:iOS UIButton in Navigation bar disappears after performing transform animation 【发布时间】:2016-05-20 14:53:09 【问题描述】:我正在尝试通过在单击时旋转它来动画从“+”按钮到“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)
它如何在导航栏之外如此轻松地工作,而在导航栏上却如此难以做到?我找不到解决方案。请帮忙
【问题讨论】:
【参考方案1】:尝试以下几行代码,它将解决您的问题。
rotateAnimation.fillMode = kCAFillModeForwards
rotateAnimation.removedOnCompletion = false
【讨论】:
【参考方案2】:在 CABasicAnimation 上试试这条线:
rotateAnimation.removedOnCompletion = false
它可能会解决您的问题。
【讨论】:
以上是关于导航栏中的iOS UIButton在执行变换动画后消失的主要内容,如果未能解决你的问题,请参考以下文章
关于 iOS UIButton执行动画后点击按钮无法响应事件的问题.