UIButton 的动画图像不快速显示

Posted

技术标签:

【中文标题】UIButton 的动画图像不快速显示【英文标题】:UIButton's animating images doesn't show swift 【发布时间】:2017-03-20 23:30:24 【问题描述】:

这让我发疯了。我花了两天时间关注所有我能找到的关于如何为UIImageview 制作动画的文档。但是当我运行应用程序和代码(在viewDidLoad 中调用)时,UIButton 上没有显示动画图像

最后一个 if 语句甚至打印出“是的,它正在运行”。但是模拟器或设备上什么都没有显示。

更新:已添加func setImage(_ image: UIImage?, for state: UIControlState): 功能。现在第一个图像加载并显示,但仍然没有动画......

还尝试为按钮提供单独的Outlet - 结果相同... 我现在真的卡住了。

        var Cowboy:[UIImage] = [UIImage(named: "Cowboy__000")!, UIImage(named: "Cowboy__001")!,UIImage(named: "Cowboy__002")!,UIImage(named: "Cowboy__003")!,UIImage(named: "Cowboy__004")!,UIImage(named: "Cowboy__005")!,UIImage(named: "Cowboy__006")!,UIImage(named: "Cowboy__007")!,UIImage(named: "Cowboy__008")!, UIImage(named: "Cowboy__009")!]

        var currentAnimationImages = [UIImage]

        for i in 0..<Cowboy.count 

            currentAnimationImages.append(Cowboy[i])

        

        //buttons stored in outlet collection
        print("currentAnimationImages", currentAnimationImages) //the array contains the images!
        buttons[0].setImage(currentAnimationImages.first, for: .normal) //is shown
        //nothing happens...
        buttons[0].imageView!.animationImages = currentAnimationImages
        buttons[0].imageView!.animationDuration = 0.2
        buttons[0].imageView!.animationRepeatCount = 10
        buttons[0].imageView!.startAnimating()
            if buttons[0].imageView!.isAnimating == true 
            print("yes, running") //this is printed out!
             else 
            print("no, not running")
            

所有的帮助都是需要和感激的。

【问题讨论】:

可能所有图片都一样 buttons 是 IBOutletCollection 吗?它是在你的故事板或 xib 文件中连接的吗? @Vinodh 它们是一组共同创建动画的图像。 @MichaelDautermann 是的,他们通过故事板连接起来。 @MichaelDautermann 但是如果我将它们单独连接起来,也会发生同样的事情,单独的Outlets 【参考方案1】:

您必须调用 func setImage(_ image: UIImage?, for state: UIControlState): 获取要显示的图像,然后才能对其进行动画处理。

例如:

buttons[0]. setImage(currentAnimationImages[0], forState: .Normal)
// Now you can start animating
buttons[0].imageView!.animationImages = currentAnimationImages
buttons[0].imageView!.animationDuration = 0.2
buttons[0].imageView!.animationRepeatCount = 10
buttons[0].imageView!.startAnimating()

【讨论】:

尝试将animationDuration 增加到 1.0 尝试在每个图像名称的末尾添加.png 或您的文件扩展名。例如UIImage(named: "Cowboy__000.png")!

以上是关于UIButton 的动画图像不快速显示的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 动作

带有动画图像的 UIButton 不显示

带有 UIImageView 子视图的 UIButton 以显示动画图像

如何将 UIButton 设置为 Touch ID 或 Face ID 图像

tableView 不快速显示数据

具有突出显示不透明度和动画的圆形 UIButton