问题标签 [caemitterlayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
296 浏览

ios - 如何让 CAEmitterLayer 一次只生成一个单元格 swift 4

我正在努力使我的 CAEmitterLayer 对象一次只生成一个单元格。一旦细胞寿命到期,我想产生下一个,依此类推。这样做的原因是因为它们不断重叠导致它看起来很糟糕。

我尝试了苹果文档,但找不到任何有用的东西。 https://developer.apple.com/documentation/quartzcore/caemitterlayer

0 投票
0 回答
142 浏览

ios - 当 UIViewController 模态呈现时,CAEmitterLayer 粒子不可见

我有一个使用CAEmitterLayer. 粒子效果创建五彩纸屑效果,其中五彩纸屑从视图顶部落下。被CAEmitterLayer作为子层添加到视图控制器的UIView(专门为此目的在情节提要中创建的confettiView)中:viewDidLoad()

UIViewController包含UIView使用以下自定义代码(通过将其添加到另一个UIViewController)显示时,效果会正确显示。

但是,当我将视图更改为模态显示(使用UIViewController.present)时,效果不可见:

当视图控制器模态呈现时如何使粒子效果可见的任何见解?

0 投票
2 回答
112 浏览

ios - CAEmitterLayer 最终在添加 EmitterCells 时有延迟

我们已经看到了一个非常奇怪的问题(下面的 gif 图像),

  1. 我们有一个呈现的 View Controller,它有一个TeamBadgeView,它是一个按钮,它发出 emoji 作为CAEmitterCells
  2. 点击此按钮可让用户在他们的屏幕上发送垃圾邮件
  3. 关闭呈现的视图控制器,并重新呈现视图控制器,现在有一个延迟。我呈现/关闭视图控制器的CAEmitterCell次数越多,响应速度就越慢
  4. 确认这不是泄漏问题,视图控制器和按钮正在正确释放
  5. 我试过移动CAEmitterLayer和移动CAEmitterCell,在按钮中保存一个引用,并在本地声明,但类似的问题
  6. 也许最奇怪的是,如果我根本不按下按钮,只是多次呈现/关闭视图控制器,然后按下按钮,就会有延迟。唯一没有延迟的情况是在第一次显示 View Controller 时按下按钮
  7. 每次我向按钮发送垃圾邮件时,我都确认按钮的action触发是正确的。只是发射器单元没有渲染几秒钟。并且一些发射器单元根本不渲染

它已经到了令人难以置信的地步,有人对这可能是什么有任何想法或线索吗?

ViewController 的第一个介绍:
在此处输入图像描述

在 ViewController 的第 5 次演示之后(以相同的速度按下按钮):

在此处输入图像描述

视图控制器代码:

按钮代码:

0 投票
1 回答
1249 浏览

ios - 如何在 SwiftUI 上使用 CAEmitterLayer 制作动画?

如何将此代码转换为SwiftUI. 这是雪景效果。我使用了 CAEmitterLayer,但我不知道如何在 SwfitUI 中使用它。SwiftUI 中没有 addSublayer。是否可以在不使用 UIHostingController 的情况下运行此代码?

0 投票
1 回答
335 浏览

ios - CAEmitterLayer在swift中的发射经纬度

你好我有一个关于发射经度和纬度的问题,我不知道它们是用来做什么的。我目前正在学习一本关于动画的教程书,我现在在 CAEmitterLayer 上,我已经停止学习,因为我不知道这两件事。我会感谢你的帮助。谢谢你。

0 投票
1 回答
74 浏览

swift - EmitterCells 未显示在 CAEmitterLayer 中

我似乎无法获得 CAEmitterLayer 显示 CAEmitterCells。我在 Storyboard 中添加了 ConfettiEmitterView,并且视图按预期显示为红色背景。但是细胞没有显示出来。也没有错误或警告。

编码:

向 Storyboard 中的 UIViewController 添加 ConfettiEmitterView 类型的视图应该足以重新创建问题。

0 投票
1 回答
51 浏览

ios - 使用 SwiftUI 使用 forEach 向 CAEmitterLayer 添加不同的对象

当我添加多个对象时,我必须一一写如下。当我想添加 2 个或更多对象时,我总是必须复制和粘贴。我不希望这样,我尝试用 forLoop 来做,但我只看到最后添加的任何对象。 在此处输入图像描述

循环

我写了一个函数。ForLoop 的工作量与数组中的图像数量一样多。

使用功能

0 投票
1 回答
42 浏览

swift - CAEmitterLayer 在 Swift 的 MacOS 中不起作用

我只是简单地创建了一个故事板程序,并将主 ViewController 代码更改为下面的代码,这在其他人的示例中运行良好。但它在视图上似乎什么都没有?寻求帮助。

我做了什么:

  1. 用故事板创建一个项目,我得到了“AppDelegate.swift”和“ViewController.swift”

  2. 将“Ball_green.png”粘贴到我的项目中,然后在我的项目的文件树下查看它。

  3. 将下面的代码粘贴到“ViewController.swift”中

0 投票
1 回答
35 浏览

swift - 我无法将 UIBezierPath 添加到 CAEmitterCell 的内容变量

我无法将使用 UIBezierPath 绘制的图标添加到 CAEmitterCell。我想知道是不是图标没有画出来?当我运行应用程序时,ShapeView 不起作用。但是,您可能会发现 ShapeView 在您正常使用时可以正常工作。

那么我有机会将 UIBezierPath 转换为图像吗?

它实际上可以在不转换为图像的情况下完成吗?

使用

形状视图

UIBezier 路径

粒子效果视图

0 投票
0 回答
77 浏览

swift - CAEmitterLayer 停止显示

我为 SwiftUI调整了这段代码来显示五彩纸屑粒子,但有时粒子发射器不起作用。我注意到这通常发生在发送到后台(不完全杀死应用程序)并重新打开它之后,或者只是让应用程序静置一段时间然后再试一次。

我已经尝试使用beginTime其他答案提到的(在发射器和单元上),但这完全破坏了事情。我还尝试切换各种其他发射器属性(birthRate、isHidden)。这可能与我正在使用 UIViewRepresentable 进行调整有关。尽管调试控制台说它仍然可见,但发射器层似乎只是消失了。

查看可表示的

用于测试的 swiftui 视图