Странная проблема. Кажется, я не могу решить, где только на iOS 7
, CAEmitterLayer
неправильно порождает частицы на экране, когда рождаемость первоначально установлена на ненулевое значение. Он как бы вычисляет состояние, в котором слой будет в будущем.
// Create black image particle
CGRect rect = CGRectMake(0, 0, 20, 20);
UIGraphicsBeginImageContext(rect.size);
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Create cell
CAEmitterCell *cell = [CAEmitterCell emitterCell];
cell.contents = (__bridge id)img.CGImage;
cell.birthRate = 100.0;
cell.lifetime = 10.0;
cell.velocity = 100.0;
// Create emitter with particles emitting from a line on the
// bottom of the screen
CAEmitterLayer *emitter = [CAEmitterLayer layer];
emitter.emitterShape = kCAEmitterLayerLine;
emitter.emitterSize = CGSizeMake(self.view.bounds.size.width,0);
emitter.emitterPosition = CGPointMake(self.view.bounds.size.width/2,
self.view.bounds.size.height);
emitter.emitterCells = @[cell];
[self.view.layer addSublayer:emitter];
Я видел на DevForums одно сообщение, в котором несколько человек упомянули, что у них были подобные проблемы с iOS 7
и CAEmitterLayer
, но никто не имел никаких идей, как его исправить. Теперь, когда iOS 7
больше не бета-версия, я решил, что я должен спросить здесь и посмотреть, может ли кто-нибудь ее взломать. Я действительно надеюсь, что это не просто ошибка, которую мы должны ждать, когда 7.0.1
или 7.1
будут исправлены. Любые идеи будут высоко оценены. Спасибо!