使用 Swift 3 为 iOS 中的 UIButton 设置“背景颜色”动画
Posted
技术标签:
【中文标题】使用 Swift 3 为 iOS 中的 UIButton 设置“背景颜色”动画【英文标题】:Animate the 'backgroundColor' for a UIButton in iOS using Swift3 【发布时间】:2016-12-15 11:44:07 【问题描述】:我想为我的 UIButtons 的 backgroundColor 属性设置动画,但我不知道从哪里开始。我从来没有使用过Core Animation,我不确定我是否需要它来做一些基本的事情?
我使用类和方法为按钮设置样式,如下所示:
redTheme.swift
func makeRedButton()
self.layer.backgroundColor = myCustomRedcolor
【问题讨论】:
【参考方案1】:您可以使用UIView Animation
执行此操作,如下所示:
注意:在执行动画之前不要忘记将背景设置为清除,否则它将无法正常工作。那是因为动画需要一个起点和终点,起点是清晰的红色。或者 alpha 0 到 alpha 1 或者相反。
let button = UIButton(frame: CGRect(x: 0, y: 100, width: 50, height: 50))
button.layer.backgroundColor = UIColor.clear.cgColor
self.view.addSubview(button)
func makeRedButton()
UIView.animate(withDuration: 1.0)
button.layer.backgroundColor = UIColor.red.cgColor
【讨论】:
【参考方案2】:Swift 4 - 一种简单的方法来为您的 UIButton
或任何其他 UIView
上的任何更改设置动画:
UIView.transition(with: button, duration: 0.3, options: .curveEaseInOut, animations:
self.button.backgroundColor = .red
self.button.setTitle("ERROR", for: .normal)
self.button.setTitleColor(.white, for: .normal)
)
【讨论】:
设置标题颜色没有动画效果【参考方案3】:出于某种原因动画 button.layer.backgroundColor 对我的自定义 uibutton 的影响为零,因此我像这样为 alpha 设置动画:
func provideVisualFeedback(_ sender:UIButton!)
sender.backgroundColor = UIColor.whatever
sender.alpha = 0
UIView .animate(withDuration: 0.1, animations:
sender.alpha = 1
, completion: completed in
if completed
sender.backgroundColor = UIColor.white
)
然后
@IBAction func buttonAction(_ sender:NumberPadButton!)
provideVisualFeedback(sender)
do your thing once animation was setup with the helper above
【讨论】:
以上是关于使用 Swift 3 为 iOS 中的 UIButton 设置“背景颜色”动画的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 8 / Swift 3 中的 iOS 异步单元测试(waitForExpectations 失败)