我使用NSTimer
每秒更新UIButton
的标题。
它有效,但标题中的文字会自动闪烁(动画为alpha 0
并返回)。
我尝试使用button.layer.removeAllAnimations()
没有运气,也没有例外,所以QuartzCore似乎正确链接。
目前的非工作偏执代码:
UIView.setAnimationsEnabled(false)
UIView.performWithoutAnimation {
button.setTitle(time, forState: .Normal)
button.layer.removeAllAnimations()
}
UIView.setAnimationsEnabled(true)
答案 0 :(得分:38)
确保您的按钮是“自定义”按钮,而不是“系统”按钮。
如果您在故事板上创建了它,那么只需更改按钮类型即可。如果您以编程方式创建它,那么它应该是:
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
答案 1 :(得分:16)
我做了一个Swift扩展来执行此操作:
extension UIButton {
func setTitleWithOutAnimation(title: String?) {
UIView.setAnimationsEnabled(false)
setTitle(title, forState: .Normal)
layoutIfNeeded()
UIView.setAnimationsEnabled(true)
}
}
适用于iOS 8和9,UIButtonTypeSystem
。
答案 2 :(得分:7)
您可以在闭包内执行按钮更改:
UIView.performWithoutAnimation {
//Button changes
button.layoutIfNeeded()
}
希望这有帮助。