2013-06-18 2 views
1

Я видел несколько вопросов, связанных с этим здесь SO, но ни один из них не кажется, вполне отвечает этого: delay часть UIViewanimateWithDuration:delay:options:animate:completion: не задержит. Вот фактический код, который вызывает его:UIView animateWithDuration: Задержка: Варианты: одушевленное: завершение не задерживая

-(void) viewDidAppear:(BOOL)animated 
{ 
    NSLog(@"about to start animateWithDuration..."); 

    [UIView animateWithDuration:3.0 delay:2.0 options:UIViewAnimationOptionTransitionNone 
        animations:^{NSLog(@"in the animations block..."); self.textView.hidden = YES;} 
        completion:^(BOOL finished){if (finished) {NSLog(@"In the completion block..."); self.textView.hidden = NO; [self.player play];}}]; 
} 

А вот это NSLog временные метки:

2013-06-18 15: 27: 16,607 AppTest1 [52083: c07] собирается начать animateWithDuration. ..

2013-06-18 15: 27: 16,608 AppTest1 [52083: c07] в анимации блокирующих ...

2013-06-18 15: 27: 16,609 AppTest1 [52083: c07] в блок завершения ...

Как видно, инструкции выполняются в миллисекундах, а не от 2 до 3 секунд. Кто-нибудь знает причину этого?

ответ

7

Свойство hidden не анимируемое:

Следующие свойства UIView класса анимируемые:

@property frame

@property bounds

@property center

@property transform

@property alpha

@property backgroundColor

@property contentStretch

Попробуйте использовать один из этих свойств в вашей анимации блока, а затем должно произойти задержка. Например, вы можете анимировать alpha от 1.0 до 0.0, а затем скрыть его в блоке завершения.

+0

Спасибо за быстрый ответ! Я также выполнил эту работу, не используя animateWithDuration: вообще, используя [self performSelector: @selector (doneMethod) withObject: nil afterDelay: 0.5]; – user2491253

Смежные вопросы