С помощью этого метода вы избегаете срабатывания таймеров во время анимации imageView из-за медленной загрузки изображения.
Вы можете использовать как performSelector: withObject: afterDelay:
, так и GCD следующим образом:
[self performSelector:@selector(didFinishAnimatingImageView:)
withObject:imageView
afterDelay:imageView.animationDuration];
/! \ self.imageView.animationDuration
Ставка должна быть настроена до startAnimating
, в противном случае это будет 0
Чем если -(void)didFinishAnimatingImageView:
создать фоновую очередь, выполнить проверку свойства isAnimating
, чем выполнить остальные в основной очереди
- (void)didFinishAnimatingImageView:(UIImageView*)imageView
{
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.yourcompany.yourapp.checkDidFinishAnimatingImageView", 0);
dispatch_async(backgroundQueue, ^{
while (self.imageView.isAnimating)
NSLog(@"Is animating... Waiting...");
dispatch_async(dispatch_get_main_queue(), ^{
/* All the rest... */
});
});
}