CAEmitterLayer: Usando una image de png @ 2x (retina) con CAEmitterCell

Usando CAEmitterLayer, las imágenes @ 2x (retina) no están siendo escaladas como en otras partes de iOS. El resultado que obtengo es que la versión @ 2x se muestra 4 veces el tamaño de la image sin retina en lugar de networkingucirse a escala.

¿Alguna idea de cómo solucionar esto? He intentado probar el dolor de image en un UIImageView y los resultados son como deberían, por lo que parece ser un problema con CAEmitterLayer y CAEmitterCell. Las imágenes tienen el especificador @ 2x.png correcto.

Aquí está el código que estoy usando:

CAEmitterLayer *fallingCoinEmitter = [CAEmitterLayer layer]; fallingCoinEmitter.emitterPosition = CGPointMake(self.view.bounds.size.width / 2.0, -30); fallingCoinEmitter.emitterSize = CGSizeMake(self.view.bounds.size.width * 2.0, 0.0);; // Spawn points for the flakes are within on the outline of the line fallingCoinEmitter.emitterMode = kCAEmitterLayerOutline; fallingCoinEmitter.emitterShape = kCAEmitterLayerLine; // Configure the snowflake emitter cell CAEmitterCell *coin = [CAEmitterCell emitterCell]; coin.birthRate = 8.0; coin.lifetime = 5.0; coin.velocity = -180; // falling down slowly coin.velocityRange = 80; coin.yAcceleration = 40; coin.emissionRange = 0.4 * M_PI; // some variation in angle coin.spinRange = 0.45 * M_PI; // slow spin coin.contents = (id) [[UIImage imageNamed:@"Coin_Generic_Emitter"] CGImage]; coin.scale = 1.0; coin.scaleRange = 0.0; // Make the flakes seem inset in the background fallingCoinEmitter.shadowOpacity = 1.0; fallingCoinEmitter.shadowRadius = 4.0; fallingCoinEmitter.shadowOffset = CGSizeMake(0.0, 3.0); UIColor *darkGreenColor = [UIColor colorWithRed:0.005 green:0.163 blue:0.005 alpha:1.000]; fallingCoinEmitter.shadowColor = [darkGreenColor CGColor]; [fallingCoinEmitter setContentsScale:[UIScreen mainScreen].scale]; //fallingCoinEmitter.shouldRasterize = YES; //[fallingCoinEmitter setRasterizationScale:[UIScreen mainScreen].scale]; //fallingCoinEmitter.scale = fallingCoinEmitter.scale / [[UIScreen mainScreen] scale]; // Add everything to our backing layer below the UIContol defined in the storyboard fallingCoinEmitter.emitterCells = [NSArray arrayWithObject:coin]; [self.view.layer insertSublayer:fallingCoinEmitter atIndex:0]; 

¡Gracias!

Actualizar:

@Fabian, configurar contentScale no funciona, al less no es mi solución

  [fallingCoinEmitter setContentsScale:[UIScreen mainScreen].scale]; 

También probé esto sin resultados …

  emitter.shouldRasterize = YES; [emitter setRasterizationScale:[UIScreen mainScreen].scale]; 

Y la configuration del range de escala no funcionó. Todavía hay una diferencia entre los tamaños en el iPad 2 y 3 (w RD).

Debe intentar modificar las CAEmmitterCell de scale y scaleRange su CAEmmitterCell s según la pantalla del dispositivo.

cell.scale = cell.scale / [[UIScreen mainScreen] scale];