У меня есть система частиц, созданная с CAEmitterLayer
. Эффект частиц создает эффект конфетти, когда конфетти падает с верхней части экрана. CAEmitterLayer
добавляется в качестве подслоя к UIView
(специально созданному для этой цели в раскадровке confettiView
) в viewDidLoad()
для контроллера представления:
override func viewDidLoad() {
...
createParticles(for: confettiView)
...
}
func createParticles(for view: UIView) {
let particleEmitter = CAEmitterLayer()
particleEmitter.emitterPosition = CGPoint(x: view.center.x, y: -96)
particleEmitter.emitterShape = kCAEmitterLayerLine
particleEmitter.emitterSize = CGSize(width: view.frame.size.width, height: 1)
...
(adding the emitter cells here)
...
view.layer.addSublayer(particleEmitter)
}
Когда UIViewController
, включая UIView
, отображается со следующим пользовательским кодом (добавляя его к другому UIViewController
), эффект отображается правильно.
parentViewController.addChildViewController(childViewController)
childViewController.frame = parentViewController.view.frame
parentViewController.view.addSubview(childViewController.view)
childViewController.didMove(toParentViewController: parentViewController)
Но когда я изменяю представление, которое будет представлено модально (с UIViewController.present
), эффект не будет виден:
parentViewController.present(childViewController, animated: true)
Есть какие-нибудь идеи о том, как сделать эффект частиц видимым, когда контроллер представления представлен модально?