我升级到 XCode 8.0 / iOS 10,现在导航栏的颜色变化动画不再起作用,它直接改变颜色,没有任何动画。
UIView.animateWithDuration(0.2, animations: {
self.navigationController?.navigationBar.barTintColor = currentSection.color!
})
有人知道如何解决这个问题吗?
要在 iOS10 中动画导航栏颜色变化,您需要调用layoutIfNeeded
在动画块内设置颜色后。
示例代码:
UIView.animateWithDuration(0.5) {
self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
self.navigationController?.navigationBar.layoutIfNeeded()
}
我还想通知苹果不正式支持 https://forums.developer.apple.com/thread/60258像 barTintColor 这样的属性中的动画,因此该方法可以随时中断。
如果在动画期间在导航栏上调用 -layoutIfNeeded
阻止它应该更新其背景属性,但考虑到性质
关于这些属性的作用,实际上还没有任何类型的
保证您可以为其中任何一个制作动画。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)