- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们一直看到的一个非常奇怪的问题(下面的 gif),
TeamBadgeView
,这是一个以 CAEmitterCells
CAEmitterCell
变得越来越无响应CAEmitterLayer
和 CAEmitterCell
,在按钮中保存一个引用,并在本地声明,但类似的问题action
都被正确触发。只是发射器单元有几秒钟没有渲染。一些发射器单元根本不渲染这已经到了令人难以置信的地步,有人对这可能是什么有任何想法或线索吗?
在第 5 次呈现 ViewController 之后(以相同的速度按下按钮):
View Controller 代码:
let teamBadgeView = TeamBadgeView.fromNib()
teamBadgeView.configure()
按钮代码:
class TeamBadgeView: UIView {
let emitter = CAEmitterLayer()
let fireSize = CGSize(width: 16, height: 18)
let fireScale: CGFloat = 0.8
func configure() {
emitter.seed = UInt32(CACurrentMediaTime())
emitter.emitterPosition = CGPoint(x: bounds.midX, y: 0)
emitter.emitterShape = CAEmitterLayerEmitterShape.line
emitter.emitterSize = fireSize
emitter.renderMode = CAEmitterLayerRenderMode.additive
layer.addSublayer(emitter)
}
@IBAction func tapAction(_ sender: Any) {
emitFire()
}
private func emitFire() {
let cell = CAEmitterCell()
let beginTime = CACurrentMediaTime()
cell.birthRate = 1
cell.beginTime = beginTime
cell.duration = 1
cell.lifetime = 1
cell.velocity = 250
cell.velocityRange = 50
cell.yAcceleration = 100
cell.alphaSpeed = -1.5
cell.scale = fireScale
cell.emissionRange = .pi/8
cell.contents = NSAttributedString(string: "🔥").toImage(size: fireSize)?.cgImage
emitter.emitterCells = [cell]
}
}
最佳答案
而不是每次都设置 emitterCells
数组:
emitter.emitterCells = [cell]
...将新单元格附加到它。如果它为 nil,请确保将其初始化为空数组,否则追加将不起作用:
if emitter.emitterCells == nil {
emitter.emitterCells = []
}
emitter.emitterCells?.append(cell)
关于ios - CAEmitterLayer 最终在添加 EmitterCells 时有延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312018/
所以我使用 CAEmitterLayer 开发了一个应用程序。最初我让它自动发射(当应用程序加载时,它将开始发射 Spark ),它在模拟器和设备中都工作得很好。 现在,我将其更改为当用户点击屏幕时发
我只想运行一次 CAEmitterLayer,我想停止birthRate,但我做不到。我想要的是它在点击屏幕时只运行一次。我一直在尝试与代表合作,但我无法让它发挥作用。你能告诉我我的代码是否有效。
我有一个 CAEmitterLayer 实例,它发出一些 CAEmitterCells。我想知道,是否可以暂停这一层,这样就不会产生新的 CAEmitterCells 并且已经产生的那些在屏幕上的位置
我只是将 UIView 添加到我的 storyboard view controller,然后创建一个 UIView 类来显示粒子效果。我将 UIView 的 类名称更改为我创建的自定义类的名称。我在
我正在努力创建一个与屏幕高度相同的 CAEmitterLayer,并推离 -X,因此 CAEmitterCells 从左侧(离开屏幕)移动到右上角。 我遇到了一个问题,CAEmitterLayer 的
我有一个 CAEmitterLayer 实例,我想暂停然后恢复多次。 我已经找到了多种使用两个 CAEmitterLayer 扩展函数来实现这一点的方法: public func pause() {
我正在使用 Apple 的 CAEmitterLayer 和 CAEmitterCell 设计一个粒子系统,在 iPhone5 和模拟器上一切都很顺利。但是一旦我在 iPhone4S 上运行它,粒子系
我在 iOS 中使用 CAEmitterLayer 玩粒子系统(就像在 this example 中一样),但我无法在需要时移除粒子。 我正在尝试以下代码,但它不起作用: [self.emitterL
我正在尝试重新创建此效果(请参见下图),但是具有圆形路径,因为我有一个圆形按钮。 这是来源。 https://github.com/uiue/ParticleButton/blob/master/Pa
在 iPad 版 Swift Playgrounds 中,我很难将 CAEmitterLayer 实例永久限制在中心。例如,它保持居中直到设备旋转,因此我需要找到某种方法将其限制在所有设备方向的中心。
我想在用户猜对后制作五彩纸屑效果,我在网上搜索了一些看起来不错的东西,但是它只有.m文件,我不知道如何处理头文件。 This is the link to the page with the Conf
我想在矩形内制作粒子。 这段代码有什么问题?它仅从发射器位置发射,而不是矩形中的随机位置。 fireEmitter = [CAEmitterLayer layer]; [self.view.layer
我已经阅读了一些教程并查看了文档,但我无法让我的 CAEmitterLayer 显示任何粒子。我有一个 CAEmitterLayer 和 CAEmitterCell 属性,它们都具有 nonatomi
我有以下代码,将粒子添加到位于其他一些 UIView 中心的名为 ParentView 的 UIView: CAEmitterLayer *emitterLayer = [CAEmitterLayer
我想创建一个树叶飘落的动画这是我的代码: private func setupEmitter() { let size = self.bounds.size let emitter
我似乎无法解决的奇怪问题仅在 iOS 7 上,当出生率最初设置为非零值时,CAEmitterLayer 会在屏幕上错误地生成粒子.就好像它计算了层在未来的状态。 // Create black ima
我正在尝试设置一个 CAEmitterLayer 来制作五彩纸屑效果,我遇到了两个问题: 每当我将单元格上的 birthRate 设置为非零值以启动动画时,我都会在屏幕上随机放置一系列单元格,这些单元
有什么想法为什么仅使用带有 CAEmitterLayer 子层的普通 ScreenSaverView 子类的屏幕保护程序会在主屏幕上渲染良好并且断断续续(就好像每 2. 帧渲染一样)在那里..)在辅助
我正在尝试为 CAEmitterLayer 的 emitterPosition 设置动画,如下所示: CABasicAnimation *animation = [CABasicAnimation a
我们一直看到的一个非常奇怪的问题(下面的 gif), 我们有一个呈现的 View Controller ,它有一个 TeamBadgeView,这是一个以 CAEmitterCells 形式发出表情符
我是一名优秀的程序员,十分优秀!