我该如何在两张PNG图片之间为UIButton添加动画效果?

18

我有两个PNG图片,希望将它们作为按钮使用。如何通过快速地在这两张图片之间切换来实现对UIButton的动画效果?

3个回答

43
你可以使用按钮的imageViewanimationImages属性:
myButton.imageView.animationImages =
[NSArray arrayWithObjects:[UIImage imageNamed:@"image1.png"],
                          [UIImage imageNamed:@"image2.png"],
                          nil];
myButton.imageView.animationDuration = 0.5; //whatever you want (in seconds)
[myButton.imageView startAnimating];

你的按钮将在两张图片之间切换。

编辑:正如@tidbeck指出的那样,需要为按钮分配一张图像才能创建imageview属性。


由于某些原因,我在按钮应该出现的地方只看到了一个空白区域。这在iOS5中仍然可能吗? - Smikey
根据(苹果文档)[http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImageView_Class/Reference/Reference.html],是的。 - Youssef
3
为了创建 ImageView,我需要先在按钮上设置一张图片: [self.button setImage:[UIImage imageNamed:"img.png"] forState:UIControlStateNormal]; - tidbeck
1
如果您的图像具有相同的前缀,为什么不直接使用动画图像呢?您可以使用以下代码:[myButton setImage:[UIImage animatedImageNamed:@"image" duration:0.5] forState:UIControlStateNormal]。在Swift中,您可以使用以下代码:myButton.setImage(UIImage.animatedImageNamed("image", duration: 0.5), forState: .Normal) - awph

1
通常情况下,对于一个按钮,您可以设置三种“活动”状态: - 正常 - 高亮 - 选中 我不知道这是否有帮助,但如果您将一张图片设置为“正常”,另一张图片设置为“高亮”,在按下按钮时您可以看到两张图片。 我不知道这个效果是否足够满足您的需求。

1
我希望按钮能够自动播放动画,而不需要用户输入。我看了一百篇文章,但是我只看到了如何翻译、旋转等操作现有的图像,而没有看到如何使用新图像进行动画处理。 - Jack

0
这个小例子展示了如何设置一个UIButton来显示一个无限循环的心跳动画。
我已经将8张图片添加到Assets.xcassets中,并将它们命名为:heart1、heart2、...、heart8。
private func showHeartedAnimation() {
    var images = [UIImage]()
    for i in 1...8 { images.append(UIImage(named: "heart\(i)")!) }
    self.heartButton.setImage(UIImage.animatedImage(with: images, duration: 0.2), for: .normal)
}

如果您想在某个时候禁用动画,只需将一个简单的UIImage分配给相同的按钮即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接