2015-06-22 7 views
6

Я хочу добавить фоновый просмотр с видео (или gif), как в приложении «Uber» Я бы хотел использовать видеофайлы в моем приложении в течение длительного времени.Какова лучшая практика добавления видеофайла?

И я хочу знать ответы на эти вопросы:

  • Какой из них будет потреблять меньше энергии батареи
  • Могу ли я использовать его на iPhone или IPad
  • Производительность этого метода

Снимок экрана с регистрационной формы

enter image description here

+0

Вопрос «Лучшая практика» не поощряет аську проявлять усилие. Там, поскольку они не подходят для переполнения стека. http://meta.stackexchange.com/questions/142353/why-is-asking-a-question-on-best-practice-a-bad-thing – vikingosegundo

+0

Я согласен с вами, но если я хочу использовать тот или иной метод фона В течение долгого времени я хочу знать, что из них будет потреблять меньше энергии батареи, и я могу использовать его на iPhone или iPad. –

+0

Итак, ваш вопрос просто стал очень приятным примером, почему проблемы с лучшей практикой плохи: как кто-то может ожидать этого, просто попросив передовую практику? – vikingosegundo

ответ

7

Прежде всего,

у вас есть два основных варианта: использование ImageView с GIF или использовать видео для фона с AVPlayer или MPMoviePlayerController.Вы можете найти много примера для обоих способов, вот некоторые из них:

В ответ на вопросы:

Что из них будет потреблять меньше энергия батареи

Генератор ally использовать видео: как отмечено пользователем vikingosegundo видео, как правило, оптимизированы, и их кодеки имеют дело с графическими процессорами; отображение GIF должно быть единственным «CPU-job», потому что оно просто показывает цикл кадров. Таким образом, сравнение энергии происходит между простым циклом кадров (GIF) и более сложным циклом кадров, который может быть ускорен многими способами (видео). Однако в моем опыте небольшой GIF дает хорошую производительность.

Могу ли я использовать его на iPhone или IPad

В обоих, но вы должны быть осторожны с соотношением сторон и autolayout ограничений

Производительность этого метода

Отлично в обоих случаях, но вы должны быть осторожны относительно размера вашего GIF или видео: больше ваш файл (GIF или видео), хуже должно быть представление. Для видео более точно, более высокое качество хуже должно быть производительность, в то время как продолжительность видео не должна влиять.

+0

Почему gif потребляет меньше энергии? – vikingosegundo

+0

Спасибо за ваш ответ @MassimoPolimeni, я думаю, что найду золотую середину между производительностью и качеством. –

+0

@ vikingosegundo Я добавил больше информации :) теперь мой ответ более точный. @TikhonovAlexander;) получайте удовольствие и сделайте некоторый тест для поиска лучшего выбора –

0

Вы можете использовать видео непосредственно & Избегают режима повтора,

ИЛИ

Изображения вместе с по умолчанию animationImages Недвижимость UIImageView Класс.

Как Ниже

YourImageView.animationImages = [NSArray arrayWithObjects: 
            [UIImage imageNamed:@"sample_1.png"], 
            [UIImage imageNamed:@"sample_2.png"], 
            [UIImage imageNamed:@"sample_3.png"], 
            [UIImage imageNamed:@"sample_4.png"], 
            [UIImage imageNamed:@"sample_5.png"], 
            nil]; 

// How many seconds it should take to go through all images one time. 
YourImageView.animationDuration = 5.0; 

// How many times to repeat the animation (0 for indefinitely). 
YourImageView.animationRepeatCount = 4; 

[YourImageView startAnimating]; 

Надеется, что это помогает.

+0

Это выглядит очень легко, спасибо –

+0

Нет, спасибо. Примите ответ ... Upvote it ... –

0

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

UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 548)]; 

//Add images which will be used for the animation using an array. Here I have created an array on the fly 
NSMutableArray *drawingImgs = [NSMutableArray array]; 
[drawingImgs addObject:[UIImage imageNamed:@"image1.png"]]; 
[drawingImgs addObject:[UIImage imageNamed:@"image2.png"]]; 
[drawingImgs addObject:[UIImage imageNamed:@"image3.png"]]; 
[drawingImgs addObject:[UIImage imageNamed:@"image4.png"]]; 
[drawingImgs addObject:[UIImage imageNamed:@"image5.png"]]; 

backgroundImageView.animationImages = drawingImgs; 
//Set the duration of the entire animation 
backgroundImageView.animationDuration = 0.5; 

//Set the repeat count. If you don't set that value, by default will be a loop (infinite) 
backgroundImageView.animationRepeatCount = 1; 

//Start the animationrepeatcount 
[backgroundImageView startAnimating]; 
4

Один из популярных и открытой библиотеки источника для фона воспроизведения видео библиотеки сэмплов исходного кода загрузки из ниже ссылку

  1. VideoCover-iOS-Demo
  2. AMLoginViewController Uses GPUImage For Filter videos.

Это может помочь.

+0

Это полно заполняет ваше требование @TikhonovAlexander –

0

Я использовал xCode 7 и iOS 9. Я использовал gif-образ, и он работает правильно.

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Name of your image" ofType:@"gif"]; 
    NSData *gif = [NSData dataWithContentsOfFile:filePath]; 
    UIWebView *webViewBG = [[UIWebView alloc] initWithFrame:self.view.frame]; 
    [webViewBG loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil]; 
    webViewBG.userInteractionEnabled = NO; 
    [self.view addSubview:webViewBG]; 
Смежные вопросы