Проблемы с загрузкой 2 отдельных последовательностей изображений в UIImageView - PullRequest
1 голос
/ 06 июля 2011

Я не знаю, возможно ли это, но мне нужно загрузить одну последовательность изображений в imageView и воспроизвести ее только один раз, затем выгрузить эту последовательность и загрузить вторую последовательность изображений в тот же элемент управления imageView.

Вот код, который я использую для загрузки и воспроизведения первой последовательности.

imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"openingSeq0001.jpg"], 
...etc.
[UIImage imageNamed:@"openingSeq0140.jpg"],nil];

imageView.animationDuration = 2;
imageView.animationRepeatCount = 1;
[imageView startAnimating];
[self.view addSubview:imageView];
[super viewDidLoad];

Теперь я хочу загрузить и воспроизвести вторую последовательность в том же элементе управления imageView, как только он будет воспроизведен один раз. Я пробовал операторы if, даже цикл do while, чтобы убедиться, что анимация была хотя бы раз воспроизведена, уменьшил счетчик 1 и передал значение imageView.animationRepeatCount, равное 0.

imageView.animationRepeatCount = 0;

Я думал, что смогу понять это, но я кое-что упускаю. Я могу запустить вторую группу изображений или первую, а затем просто останавливается. Для этого я использовал цикл do while.

Я использовал это, чтобы заставить это работать:

SEL methodSelector = @selector(startSeqTwo);
[NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:methodSelector userInfo:nil repeats:NO];

Я использовал селектор после первого блока кода для загрузки первой последовательности и вызвал метод:

-(void)startSeqTwo;

Ответы [ 2 ]

0 голосов
/ 06 июля 2011
SEL methodSelector = @selector(startSeqTwo);
[NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:methodSelector userInfo:nil repeats:NO];

Это сработало.

Я использовал селектор после первого блока кода для загрузки первой последовательности и вызвал метод: - (void) startSeqTwo;

0 голосов
/ 06 июля 2011

Я не сделал этого, но вы можете попробовать использовать функцию self performSelectorOnMainThread:(SEL) withObject:(id) waitUntilDone:(BOOL).

-(void)animateSequence{
   [self performSelectorOnMainThread:@selector(animateFirstSequence) withObject:nil waitUnitilDone: YES];
   [self performSelectorOnMainThread:@selector(animateSecondSequence) withObject:nil waitUnitilDone: YES];
}

-(void)animateFirstSequence{
  imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"openingSeq0001.jpg"], 
...etc.
   [UIImage imageNamed:@"openingSeq0140.jpg"],nil];

  imageView.animationDuration = 2;
  imageView.animationRepeatCount = 1;
  [imageView startAnimating];
}

-(void)animateSecondSequence{
  imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"openingSeq0001.jpg"], 
...etc.
   [UIImage imageNamed:@"openingSeq0140.jpg"],nil];

  imageView.animationDuration = 2;
  imageView.animationRepeatCount = 1;
  [imageView startAnimating];
}

Редактировать

Вы также можете попробовать проверить, является ли UIImageView стилеможивите и дождитесь окончания воспроизведения следующей последовательности.Вы бы сделали это так:

-(void)animateSequence{
  //First sequence
  imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"openingSeq0001.jpg"], 
...etc.
   [UIImage imageNamed:@"openingSeq0140.jpg"],nil];

  imageView.animationDuration = 2;
  imageView.animationRepeatCount = 1;
  [imageView startAnimating];

  while([imageView isAnimating])
      //Do nothing

//second sequence
imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"openingSeq0001.jpg"], 
...etc.
   [UIImage imageNamed:@"openingSeq0140.jpg"],nil];

  imageView.animationDuration = 2;
  imageView.animationRepeatCount = 1;
  [imageView startAnimating];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...