У меня был вопрос, который, вероятно, очень прост, но я не могу его получить!
Я бы хотел привязать CAEmitterLayer к UIImageView, который будет немного анимироваться на экране. ,Я использую UIKit с xCode.
Есть просто функция, которая запускается для анимации UIImageView в другом месте, и в то же время, что это происходит, я также создаю CAEmitterLayer под ImageView, который должен привязатьк нему и двигаться вместе с ним (создав след ячеек-эмиттеров), но вместо этого он остается там, где изначально был UIImageView. Вот код, который создает CAEmitterLayer:
//This is called when the star pops upwards to shoot out little stars below it.
func createStarTrail() {
starTrailEmitter.emitterShape = CAEmitterLayerEmitterShape.point
starTrailEmitter.emitterMode = .surface
starTrailEmitter.emitterPosition = CGPoint(x: star.frame.midX, y: star.frame.minY)
starTrailEmitter.emitterSize.width = star.frame.width/2
starTrailEmitter.renderMode = CAEmitterLayerRenderMode.additive
starTrailEmitter.beginTime = CACurrentMediaTime()
starTrailEmitter.zPosition = 2
let cell = CAEmitterCell()
cell.birthRate = 20 //How many cells are created per second
cell.lifetime = 1.2 //How long a cell shows for (sec)
cell.lifetimeRange = 0.3 //How much a cell's lifetime varies either way (sec)
cell.alphaRange = 0 //The range of alpha each created cell will have
cell.alphaSpeed = -1/10 //-1.0/2.0 //Over the course of the cell's lifetime, it will fade to nothing. (full alpha / cell lifetime)
cell.velocity = 180 //How fast the cells move
cell.velocityRange = 20 //How much the created cell's velocity can vary
cell.emissionRange = CGFloat.pi/5 //Creates the cone shape (angle) in which cells can shoot out from the Emission Longitude
cell.emissionLongitude = CGFloat.pi/2 //The direction the cells shoot out in radians (0 is directly right)
cell.spinRange = 6
cell.scale = 0.06
cell.scaleRange = 0.03
cell.contents = UIImage(named: "passOne")!.cgImage
starTrailEmitter.emitterCells = [cell]
mainView.layer.addSublayer(starTrailEmitter)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {self.starTrailEmitter.birthRate = 0.0}
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {self.starTrailEmitter.removeFromSuperlayer()}
}
Спасибо за любую помощь, которую вы можете предоставить!
PS. Я также попробовал starTrailEmitter.anchorPoint
, но, похоже, это не имело значения.