我是iOS开发的新手,我使用Swift作为我的首选语言。我为儿子开发了一个简单的小程序,在UIButton上显示动物图像,当他选择正确的按钮时,所有按钮都会加载新图像,并且他要求找到不同的动物。
该程序的基础知识正在运行,他可以玩它,但现在我想继续使它变得更加漂亮。选择正确的图像后,我可以用新的图像替换按钮图像:
btnItem.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal)
我不想简单地将按钮的图像从一个图像更改为另一个图像,而是希望通过动画过渡进行更改,但我无法弄清楚如何进行更改。
我发现很多关于UIViews的过渡和很多与永久动画按钮图像有关的事情,但没有任何过渡,例如从左到右的溶解或滑动等等。
SO上的{p> This question与我的几乎相同,但答案使用了Objective-C。所以,长话短说,有没有办法在Swift中将UIButton图像从一个转换到另一个?
感谢您的提前时间。
答案 0 :(得分:33)
使用 Swift 4.0
更新以下内容 UIView.transition(with: sender as! UIView, duration: 1.5, options: .transitionFlipFromRight, animations: {
sender.setImage(UIImage(named: arrItems[intItemCounter]), for: .normal)
}, completion: nil)
UIButton是UIView的子类,因此您可以将UIView.animateWithDuration与按钮一起使用。例如,你可以这样说:
@IBAction func buttonPressed(sender: UIButton) {
UIView.transitionWithView(sender, duration: 1.5, options: .TransitionFlipFromRight, animations: {
sender.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal)
}, completion: nil)
}
点按此按钮会导致按钮翻转新图像。
如果您想要其他示例中的动画(淡出/淡出),您可以说:
@IBAction func buttonPressed(sender: UIButton) {
UIView.animateWithDuration(0.5, animations: {
sender.alpha = 0.0
}, completion:{(finished) in
sender.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal)
UIView.animateWithDuration(0.5,animations:{
sender.alpha = 1.0
},completion:nil)
})
}
您也可以像这样进行交叉溶解:
@IBAction func buttonPressed(sender: UIButton) {
UIView.transitionWithView(sender, duration: 1.5, options: .TransitionCrossDissolve, animations: {
sender.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal)
}, completion: nil)
}