2014-10-12 4 views
0

У меня есть код, который я не написал, но его нужно исправить. Существует последовательность анимации, которая должна воспроизводиться при запуске представления. Этот фрагмент кода отлично работал в iOS 6, но после обновления до iOS 8 последовательность анимации больше не работает. Может быть, вы можете помочь мне найти то, что это не так и почему она работает на 6, но не на 8.Анимационная последовательность больше не работает в iOS 8

- (void)viewDidLoad 
{ 
//bla bla stuff 

[self initiateImageSequence]; 

//bla bla more stuff 
} 

- (void)initiateImageSequence 
{ 
dispatch_queue_t backgroundQueue = dispatch_queue_create("initiate", 0); 
dispatch_async(backgroundQueue, ^{ 

    [self.mainImageView setAnimationImages:self.zoom.imageSequenceArray]; 
    [self.mainImageView setImage:[self.zoom.imageSequenceArray lastObject]]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 

     // Update UI 
     [self.mainImageView setAnimationDuration:1.0]; 
     [self.mainImageView setAnimationRepeatCount:1]; 
     [self.mainImageView startAnimating]; 
     [self showMainLayer]; 
     [self performSelector:@selector(didReceiveMemoryWarningInSite) withObject:nil afterDelay:1.0]; 
    }); 
}); 
} 
+1

Что происходит в настоящее время? Чего вы ожидаете? Что вы уже сделали, чтобы его диагностировать? –

+0

В настоящее время ничего не происходит, я вижу, что должно произойти после анимации, что должно произойти, так это то, что нужно воспроизводить последовательность анимации. То, что я сделал, диагностирует, проверяет, заполнен ли массив изображений, и все в порядке, а также проверка печати с помощью NSLog, и кажется, что код работает нормально. – Dim

+0

Возможно, это не так, но я считаю, что лучше всегда делать анимацию, изменения и т. Д. В главной очереди, иначе могут произойти странные вещи. Я бы выполнил всю загрузку в фоновом режиме, а затем начал анимацию. Я также предлагаю использовать 'dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)' , а не создавать свои собственные. – BooRanger

ответ

0

Я не думаю, что вы можете запустить анимацию на viewDidLoad как вид не будет иметь SuperView еще. Попробуйте вместо viewDidAppear:

-(void)viewDidAppear:(BOOL)animated{ 

    .... 
    [self initiateImageSequence]; 
} 
Смежные вопросы