在IOS(Swift)中覆盖Alpha图形?

时间:2016-02-11 16:20:42

标签: ios swift animation

我很好奇是否有人可以帮助我概念化最佳,最有效的方法来实现视频/图像序列叠加在视图顶部的效果。最好的例子是iOS上的股票天气应用程序。截图;

enter image description here

您可以查看动画here。我做了一些测试,发现最简单的方法是在After Effects中使用alpha通道创建我的图形,然后导出为.png图像序列,并使用以下代码;

// Set the animation group
    myAnimation!.animationImages = [UIImage]()

    for var index = 0; index < 149; index++ {
        var frameName = String(format: "image_\(index)")
        myAnimation!.animationImages?.append(UIImage(named: frameName)!)
    }

    myAnimation?.animationDuration = 5.0
    myAnimation?.startAnimating()

我一直面临的问题是,对于五秒动画循环,我正在看150帧的内容。以@ 3x和@ 2x分辨率创建这些图形,即使使用应用程序细化,也会使我的应用程序包变得庞大。此外,更重要的是,在阵列中附加150张图像似乎会在播放内容时造成相当大的滞后。

如果我要构建一个天气应用,就像上面的例子一样,我也会看到几十种不同的天气条件,需要数百个独立的帧。

有没有更好的方法来解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:0)

我会尝试使用带有.mp4的AVPlayer。低对比度的视频(如天气应用程序)将有助于保持尺寸缩小和影响最小。

答案 1 :(得分:0)

可以在此answer中找到iOS应用中Alpha通道视频的实际工作和最佳解决方案。请注意,如果您在多个背景下撰写多个视频会使您的应用充气,因为每个视频都会占用下载空间。没办法解决这个问题。此外,动态解码所有PNG图像数据会烧掉大量CPU。