即使在设备旋转后,也可以约束/居中CAEmitterLayer

问题描述 投票:0回答:1

在用于iPad的Swift Playgrounds中,我很难将CAEmitterLayer实例永久约束到中心。例如,它保持居中直到设备旋转,因此我需要找到一些方法将其约束到所有设备方向的中心。

以下是我到目前为止的情况,请记住,我已经尝试将观察者添加到设备方向,但没有用。但这可能只是我的错误。谢谢!

emitterLayer.emitterPosition = CGPoint(x: view.center.x, y: view.center.y)

let cell = CAEmitterCell()
cell.birthRate = 25
cell.lifetime = 30
cell.velocity = 250
cell.velocityRange = 250
cell.spinRange = 5
cell.scale = 0.04
cell.scaleRange = 0.03
cell.alphaSpeed = -0.15
cell.emissionRange = CGFloat.pi * 2
cell.contents = UIImage(named: "RainbowApple")?.cgImage

emitterLayer.emitterCells = [cell]
emitterLayer.beginTime = CACurrentMediaTime()
emitterLayer.zPosition = -1
view.layer.addSublayer(emitterLayer)

emitterLayer.emitterSize = CGSize(width: 320, height: 1)
emitterLayer.renderMode = CAEmitterLayerRenderMode.oldestLast
swift swift-playground
1个回答
0
投票

CALayer不支持约束。看起来你想在UIViewController中执行此操作,因此将行emitterLayer.emitterPosition = CGPoint(x: view.center.x, y: view.center.y)移动到viewDidLayoutSubviews中,每当您的视图边界发生变化时(即旋转期间)都会调用它。这将始终保持您的发射器在中心,即使中心由于其他原因而发生变化,例如iPad上的分屏多任务处理。

© www.soinside.com 2019 - 2024. All rights reserved.