【问题标题】:How to change opacity of animated gif images in iOS如何在 iOS 中更改动画 gif 图像的不透明度
【发布时间】:2016-10-30 13:51:32
【问题描述】:

相关代码如下。我希望每个图像在出现在整个动画周期中时都具有淡入效果。运行此代码时,gif 动画效果起作用,但不透明度更改代码不起作用。任何帮助将不胜感激。谢谢!

import UIKit

class View1: UIViewController {
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        var imagesNames = ["ALA0.jpeg", "ALA1.jpeg", "ALA2.png", "ALA3.png", "ALA4.png", "ALA5.png", "ALA6.png", "ALA7.png", "ALA8.png", "ALA9.png", "ALA10.png"]
        var images = [UIImage]()

        for i in 0..<imagesNames.count{
            images.append(UIImage(named: imagesNames[i])!)
            imageView.alpha = 0
            UIImageView.animate(withDuration: 1.0) {
                self.imageView.alpha = 1
            }
        }

        imageView.animationImages = images
        imageView.animationDuration = 6.0

        self.imageView.startAnimating()
    }
}

【问题讨论】:

  • 对不起……让我看看……谢谢你让我知道……谢谢
  • 代码已更新。让我知道代码对你有用。谢谢

标签: swift image opacity animated-gif


【解决方案1】:

试试下面的代码:更新

    for i in 0..<imagesNames.count{

        images.append(UIImage(named: imagesNames[i])!)
        imageView.alpha = 0
        UIImageView.animate(withDuration: 0.9, delay: 0, options: [UIViewAnimationOptions.curveEaseInOut,.repeat], animations: { 
             self.imageView.alpha = 1
            }, completion: nil)

    }

       imageView.animationImages = images
       imageView.animationDuration = 5 // I am using 5 images to perform animation

注意:从上面的代码中,你会得到一个一帧一帧的华丽效果,你必须使用动画持续时间和总动画持续时间来同步效果。

【讨论】:

    【解决方案2】:

    问题是你的动画在你的 for 循环中。

    你有 11 张图片,所以从 imageView.alpha = 0 开始执行动画的 4 行被执行了 11 次,这会混淆动画系统。

    您应该在设置动画图像或持续时间的相同位置将 alpha 设置为 0。

    至于实际的动画,你应该把它放在viewDidAppear:。你不希望你的动画在视图出现在屏幕上之前开始,否则它看起来好像不是从头开始的。

    最后,实例化图像数组的更好方法是

    let images = imageNames.flatMap { UIImage(named: $0) }

    即使是 Swiftier,也无需声明所有名称(另外,UIImage(named:) 会为您找到图像扩展名,无需添加。)

    let images = (0..&lt;11).flatMap { UIImage(named: "ALA\($0)") }

    【讨论】:

    • 感谢您指出这一点。此外,知道您不必手动插入每张图片的名称也非常有用。
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2012-06-24
    • 2012-07-18
    • 2019-07-02
    相关资源
    最近更新 更多