2015-06-22 4 views
6

Voglio aggiungere una vista di sfondo con video (o gif) come nell'app "Uber" Mi piacerebbe utilizzare la vista di sfondo del video per lungo tempo nella mia app.Qual è la migliore pratica per aggiungere la visualizzazione di sfondo del video?

E voglio conoscere le risposte a queste domande:

  • Quale di essi consumeranno meno energia della batteria
  • Posso usarlo su iPhone o iPad
  • prestazioni di questo metodo

Screenshot del modulo di registrazione

enter image description here

+0

La domanda "Best practice" non incoraggia il richiedente a mostrare sforzi. Lì, perché non sono adatti per Stack Overflow. http://meta.stackexchange.com/questions/142353/why-is-asking-a-question-on-best-practice-a-bad-thing – vikingosegundo

+0

Sono d'accordo con te, ma se voglio usare quello o un altro metodo di sfondo Vista per molto tempo, voglio sapere, quale di loro consumerà meno energia della batteria e posso usarlo su iPhone o iPad. –

+0

Quindi la tua domanda è appena diventata un esempio molto carino, perché le domande sulle migliori pratiche sono sbagliate: come dovrebbe essere in grado di anticipare ciò semplicemente chiedendo le migliori pratiche? – vikingosegundo

risposta

7

Prima di tutto,

si hanno due scelte principali: utilizzare un ImageView con una GIF o utilizzare un video per sfondo con AVPlayer o MPMoviePlayerController.È possibile trovare un sacco di esempio per entrambi i modi, ecco alcuni:

In risposta alle vostre domande:

Quale di loro consumerà meno energia batteria

Generare utilizza un video: come notato dall'utente vikingosegundo i video sono in genere ottimizzati ei loro codec si occupano delle GPU; la visualizzazione di una GIF dovrebbe essere un "lavoro CPU" solo perché mostra solo un loop di frame. Quindi il confronto energetico è tra un semplice loop di frame (GIF) e un loop di frame più complesso che può essere accelerato in molti modi (video). Nella mia esperienza tuttavia una piccola GIF offre comunque buone prestazioni.

posso utilizzarlo su iPhone o iPad

In entrambi, ma bisogna stare attenti con rapporto di aspetto e layout automatico vincoli

prestazioni di questo metodo

Eccellente in entrambi i casi, ma devi stare attento alle dimensioni della GIF o del video: più grande è il tuo file (GIF o video), peggio dovrebbe essere la prestazione. Per i video più precisamente, maggiore è la qualità peggiore dovrebbe essere la performance, mentre la durata del video non dovrebbe essere l'impatto.

+0

Perché consumare meno energia? – vikingosegundo

+0

Grazie per la tua risposta @MassimoPolimeni, penso che troverò un significato d'oro tra prestazioni e qualità. –

+0

@ vikingosegundo Ho aggiunto più informazioni :) ora la mia risposta è più accurata. @TikhonovAlexander;) divertirsi e fare qualche test per trovare la scelta migliore –

0

È possibile utilizzare il video direttamente & giocare in modalità si ripete,

O

È possibile utilizzare le immagini insieme alla proprietà animationImages predefinita della classe UIImageView.

come qui di seguito,

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]; 

Spero che questo ti aiuta.

+0

Sembra molto facile, grazie –

+0

No grazie. Accetta la risposta ... Votala ... –

0

È possibile ottenere questo utilizzando il set di immagini in .png o .jpeg formato e assegnare le immagini al 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]; 
0

Ho utilizzato xCode 7 e iOS 9. Ho usato l'immagine GIF e funziona correttamente.

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];