Частицы CAEmitterLayer не видны, когда UIViewController представлен модально - PullRequest
0 голосов
/ 02 июля 2019

У меня есть система частиц, созданная с 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)

Есть какие-нибудь идеи о том, как сделать эффект частиц видимым, когда контроллер представления представлен модально?

...