将UIButton图像从一个图像转换为另一个图像

时间:2016-03-26 16:17:16

标签: ios swift uibutton

我是iOS开发的新手,我使用Swift作为我的首选语言。我为儿子开发了一个简单的小程序,在UIButton上显示动物图像,当他选择正确的按钮时,所有按钮都会加载新图像,并且他要求找到不同的动物。

该程序的基础知识正在运行,他可以玩它,但现在我想继续使它变得更加漂亮。选择正确的图像后,我可以用新的图像替换按钮图像:

btnItem.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal)

我不想简单地将按钮的图像从一个图像更改为另一个图像,而是希望通过动画过渡进行更改,但我无法弄清楚如何进行更改。

我发现很多关于UIViews的过渡和很多与永久动画按钮图像有关的事情,但没有任何过渡,例如从左到右的溶解或滑动等等。

SO上的{p> This question与我的几乎相同,但答案使用了Objective-C。

所以,长话短说,有没有办法在Swift中将UIButton图像从一个转换到另一个?

感谢您的提前时间。

1 个答案:

答案 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)

    }