2013-07-25 3 views
5

Я использовал класс, сделанный «mayoff» (Rob Mayoff) «UIImageView + animatedGIF», который был предложен в одном из ответов здесь, в stackoverflow. UIImageView+animatedGIFUIImageView + animatedGIF всегда LOOPS

С его помощью я могу импортировать анимированные изображения .gif в UIImageView на iOS. Этот класс работает безупречно, но единственная проблема заключается в том, что .gif всегда зацикливается. Независимо от того, как я экспортирую его (я экспортирую изображение из фотошопа - 67 кадров, установите повтор на «один раз»), он навсегда зацикливается в UIImageView.

Я ввожу мой .gif с этими двумя линиями:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Loading" withExtension:@"gif"]; 
self.loadingImageView.image = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]]; 

очень просто, и это работает. Я пробовал настройку animationRepeatCount на 1, как рекомендовал Роб, но это не помогло. Также я попытался установить свойство animationImages UIImageView в gifImage.images, вместо того, чтобы просто установить свойство изображения вида в gifImage. В этом случае .gif не анимация вообще.

Любые идеи, как играть в .gif только один раз? Я могу придумать много трюков (например, установить последний кадр gif, чтобы появиться через некоторое время, но сначала я попробую сделать что-то более простое).

ответ

16

Я взял тест приложение из этого проекта и изменил viewDidLoad метод для этого:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"gif"]; 
    UIImage *testImage = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]]; 
    self.dataImageView.animationImages = testImage.images; 
    self.dataImageView.animationDuration = testImage.duration; 
    self.dataImageView.animationRepeatCount = 1; 
    self.dataImageView.image = testImage.images.lastObject; 
    [self.dataImageView startAnimating]; 
} 

Когда запуски приложения, оно оживляет образ и затем показывает только последний кадр. Если я подключу кнопку, которая отправит [self.dataImageView startAnimating], то нажатие кнопки запускает анимацию еще раз, а затем останавливается снова на последнем кадре.

Убедитесь, что вы устанавливаете изображение так, как я делаю выше. Убедитесь, что вы не, установив изображение image изображения в анимированное изображение. Свойство изображения image должно быть настроено на неанимированное изображение, если вы хотите, чтобы анимация остановилась.

+0

спасибо! Это сделал трюк! – jovanjovanovic

+0

Роб, можете ли вы проверить мой вопрос, используя 'UIImage + animatedGIF' в оверлее просмотра карты http://stackoverflow.com/questions/20558591/animated-gif-not-working-in-mkmapview-overlay-using-mkoverlayrenderer? noredirect = 1 # comment30789828_20558591. Я не могу заставить вашу категорию анимировать gif в оверлее. – wigging

+0

@Gavin, это может работать https://github.com/rishi420/Animated-GIF-iPhone –

1

Я раздвоенный «UIImage-из-анимированного-GIF» сделанного «Dreddik» и добавил метод делегата

#pragma mark - AnimatedGifDelegate 
- (void)animationWillRepeat:(AnimatedGif *)animatedGif 
{ 
    NSLog(@"animationWillRepeat"); 
    //[animatedGif stop]; 
} 

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

Раздвоенный хранилище находится в https://github.com/rishi420/Animated-GIF-iPhone

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