Как мне использовать imageWithContentsOfFile для массива изображений, используемых в анимации?

#ios #uiimage

#iOS #uiimage

Вопрос:

Это то, что у меня сейчас есть:

 NSMutableArray *images = [[NSMutableArray alloc] initWithCapacity:21];

 for(int count = 1; count <= 21; count  )
{
    NSString *fileName = [NSString stringWithFormat:@"dance2_d.jpg", count];
    UIImage  *frame    = [UIImage imageNamed:fileName];
    [images addObject:frame];
}
  

UIImage imageNamed вызывает у меня некоторые проблемы с памятью, и я хотел бы переключиться на imageWithContentsOfFile.

Я могу заставить его работать с одним изображением, но не со всем массивом:

 NSMutableArray *images = [[NSMutableArray alloc] initWithCapacity:21];

for(int count = 1; count <= 21; count  )
{
    NSString *fileName = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/dance2_001.jpg"];
    UIImage  *frame    = [UIImage imageWithContentsOfFile:fileName];
    [images addObject:frame];
}
  

Любая помощь приветствуется! Спасибо!

Ответ №1:

 for(int i = 1; i <= 21; i  )
    {
        [images addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"dance2_d", i] ofType:@"jpg"]]];
    }
  

Ответ №2:

сначала вам следует создать массив с изображениями для вашей анимации примерно так:

 NSMutableArray* images = [[NSMutableArray alloc] initWithObjects:
                             [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image1" ofType:@"jpg"]],
                             [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image2" ofType:@"jpg"]],
                             nil];
  

затем вы можете добавить его в UIImageView, чтобы анимировать его следующим образом:

 UIImageView* animationImagesView = [[UIImageView alloc] initWithFrame:CGRectMake(posX, posY, frameWidth, frameHeight)]; 
animationImagesView.animationImages = images; //array of images to be animate
animationImagesView.animationDuration = 1.0; //duration of animation
animationImagesView.animationRepeatCount = 1; //number of time to repeat animation
[self.view addSubview:animationImagesView];
  

теперь вы можете запускать и останавливать анимацию с помощью этих двух вызовов:

 [animationImagesView startAnimating]; //starts animation 
[animationImagesView stopAnimating]; //stops animation
  

надеюсь, это поможет. также не забудьте освободить и обнулить ваш массив и UIImageView, когда закончите.