Я пытаюсь загрузить 4 UIImageView для запуска различных анимаций. Каждая анимация состоит из 164 png размером 6 КБ каждая.
Я тестировал на приборах, и когда запускается в симуляторе, работает нормально, а размер в памяти меньше 5,5 МБ.
Но при запуске в iPad приложение просто вылетает без сообщения журнала или предупреждений памяти. Я проверил на инструментах, и размер памяти до сбоя составляет менее 5 МБ.
Вот код.
-(void)startAnimations
{
OTAnimationProvider *ani = [[OTAnimationProvider alloc] init];
int a;
for (a=0;a<[teams CountY];a++)
{
UIImageView *animationTeam = [[UIImageView alloc] initWithFrame:CGRectMake(10, 300 + (40 * a), 1004, 300)];
int idTeam = [[teams getValueByName:@"IdTeam" posY:a] intValue];
[animationTeam setAnimationImages:[ani animationWithName:[NSString stringWithFormat: @"OTScoreBoardLeague_%d_%d_",idTeam,a+1] frameCount:164 step:2]];
[animationTeam setAnimationDuration:animationPlayersTime];
[animationTeam setAnimationRepeatCount:1];
[animationTeam startAnimating];
[self.view addSubview:animationTeam];
[animationTeam release];
}
[ani release];
}
Объект OTAnimationProvider - это только объект с методом, который возвращает массив изображений анимации.
Любое представление о том, что я делаю неправильно: (
Спасибо.
UPDATE ---
Я пытался использовать анимационный Атлас с объектом CALayer. Но я все еще получаю те же результаты.
В устройстве происходит сбой приложения без сообщения об ошибке при отладке.
Это код:
CALayer *layer = [CALayer layer];
CGImageRef img = [[UIImage imageNamed:@"OTScoreBoardLeagueAtlasTeam_1_1.png"]CGImage];
layer.contents = (id)img;
CGSize size = CGSizeMake( 1004, 300 ); // size in pixels of one frame
CGSize normalizedSize = CGSizeMake( size.width/CGImageGetWidth(img), size.height/CGImageGetHeight(img) );
layer.bounds = CGRectMake( 0, 0, size.width, size.height );
layer.contentsRect = CGRectMake( 10, 300 + (20 * a), normalizedSize.width, normalizedSize.height );
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"sampleIndex"];
anim.fromValue = [NSNumber numberWithInt:1]; // initial frame
anim.toValue = [NSNumber numberWithInt:165]; // last frame + 1
anim.duration = 8.0f; // from the first frame to the 6th one in 1 second
anim.repeatCount = 0; // just keep repeating it
anim.autoreverses = NO; // do 1, 2, 3, 4, 5, 4, 3, 2
[layer addAnimation:anim forKey:nil]; // start
[self.view.layer addSublayer:layer];
Есть идеи?
Спасибо.