首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift中点燃UIView?

如何在Swift中点燃UIView?
EN

Stack Overflow用户
提问于 2021-06-14 13:56:39
回答 2查看 446关注 0票数 1

如何在Swift中制作模拟火灾自上而下消耗UIView的燃烧效果的动画

我发现了烟花,这是一个应用程序,允许用户调整和试用不同的CAEmitterLayer设置,并取得即时效果。这种效果适用于整个屏幕,但我将如何使用它来达到我的目的--当火从一端消耗到另一端时,UIView必须消失?

有关于使用粒子发射器在任何地方用火消耗UIView的教程吗?我知道我应该展示一些代码,但是我在这里放的任何东西都是无关紧要的。我也用尽了我的搜索引擎寻找类似的东西。我就是这样找到烟花应用的。

这似乎是一个用例,应该是不寻常的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-15 00:14:16

我对CAEmitterLayer做得不多,所以我决定试一试。

我创建了一个这样做的项目,并将其发布在Github上。它使用这段Youtube视频中的方法作为起点。你可以在这里下载:

FireEmitter项目

下面是它看起来的一个小缩略图:

该项目包括一个名为UIView的自定义子类BurnItDownView

BurnItDownView是用来包含其他视图的。

它有一个公共方法,burnItDown()。触发动画。

动画有多个部分:

  1. 一个用来模拟燃烧在平面上的火焰的CAEmitterLayer:
  2. 将发射器层从视图的顶部降低到底部的动画,
  3. CAGradientView作为遮罩应用于开始完全不透明的视图(使用[.clear, .white, .white]的颜色和[-0.5, 0, 1]的位置(其中清晰的颜色位于视图顶部),并动画渐变视图的locations属性,以从上到下隐藏视图内容。(将locations属性动画为[0, 0, 0],使整个渐变层充满清晰的颜色,完全遮掩视图的层。)
  4. 一旦视图被完全屏蔽,它就开始逐步降低发射器层的"birthRate“,直到出生率为0。然后,它保持这一步2秒,直到所有的火焰粒子已经动画消失。
  5. 一旦火焰完全“熄灭”,它就会将位置数组重置为[-0.5, 0, 1]的原始值。这将导致“隐式动画”,因此视图从底部返回,但速度很快。
  6. 最后,它将发射器层和发射器单元重置回新创建的发射器层和发射器单元,以便为动画的下一关做好准备。(我不知道如何将发射器恢复到原来的状态。(仅仅创建新的更简单。)它还调用传递给burnItDown()方法的可选完成处理程序。(应用程序的视图控制器使用闭包重新启用“烧掉它”按钮。
票数 4
EN

Stack Overflow用户

发布于 2021-06-14 14:24:53

我曾经在你的鞋,并偶然看到一个开放源码库,称为粒子动画

我不建议使用库本身,因为它是不受欢迎的。但是,我建议参考它的源代码来了解如何使用CAEmitterLayer and CAEmitterCell来制作Fire的外观!

正如你可以从它的自述中看到的,它有直接的火的例子。它还指出,甚至苹果和Facebook都使用CAEmitterLayer and CAEmitterCell来产生火灾的效果。

你可以问更多的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67971598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档