で作成されたパーティクル システムがあり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)
ビュー コントローラーがモーダルに表示されているときにパーティクル効果を表示する方法についての洞察はありますか?