2011-12-23 5 views
6

È possibile avere un flusso di copertura di più video anziché immagini in iOS? L'utente vedrebbe un'ancora dell'inizio di ogni video con il pulsante play invece di immagini, un po 'come Youtube.Utilizzo di Open Cover Flow per diapositive video anziché immagini in iOS

Quindi, invece di un insieme di immagini come l'attuale Cover Flow in iOS, sarebbe un set di video. O video e immagini mescolati.

+1

Sì, è possibile, quasi tutto è possibile in un computer :) – annonymously

risposta

4

iCarousel è il framework che userei in questo caso. È una libreria sostitutiva CoverFlow, in quanto CoverFlow è un'API non documentata sotto iOS. Vedi la descrizione sul sito GitHub e leggi la nota sotto.

A differenza di molte altre librerie "CoverFlow", iCarousel può funzionare con qualsiasi tipo di vista, non solo immagini, quindi è ideale per presentare i dati di paging in modo fluido e impressionante nella vostra app.

Non ho provato io stesso con oggetti video, ma dalla documentazione e questo, a quanto pare è possibile passare oggetti video o miniature che se cliccato, caricare un video. Per quanto riguarda le prestazioni, le miniature avrebbero molto più senso. Di seguito è riportato il codice sorgente dal readme con le spiegazioni su come utilizzarlo.

L'iCarousel segue la convenzione Apple viste di dati-guidato da fornendo due interfacce di protocollo, iCarouselDataSource e iCarouselDelegate. Il protocollo iCarouselDataSource ha i seguenti metodi richiesti (nota: per Mac OS, NSView sostituto per UIView in argomenti del metodo):

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel;

ritorno il numero di elementi (viste) nel carosello.

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view;

Ritorna una vista da visualizzare in corrispondenza dell'indice specificato nel carosello. L'argomento reusingView funziona come un UIPickerView, in cui le viste che sono state precedentemente visualizzate nel carousel vengono restituite al metodo da riciclare. Se questo argomento è nullo, puoi impostarne le proprietà e restituirlo invece di creare una nuova istanza di visualizzazione, che migliorerà leggermente le prestazioni. A differenza di UITableView, non esiste un riutilizzatore identificativo per distinguere tra diversi tipi di visualizzazioni di carosello, quindi se il carosello contiene più tipi di visualizzazione diversi, è sufficiente ignorare questo parametro e restituire una nuova vista ogni volta che viene chiamato il metodo. Dovresti assicurarti che ogni volta che il carousel: viewForPageAtIndex: metodo viene chiamato, o restituisce il reusingView o un'istanza di visualizzazione nuova di zecca anziché mantenere il tuo pool di viste riciclabili, poiché restituire più copie della stessa vista per diversi indici di carosello potrebbero causare problemi di visualizzazione con il carosello.

Così, per il secondo metodo, è possibile implementare un UIImageView che era una miniatura per il video, e riutilizzare una vista ogni volta per ogni video.L'aspetto positivo di questo è che è possibile combinare immagini e video, differenziandoli solo quando è necessario visualizzare l'immagine/video a schermo intero. E sarebbe semplice come interrogare la classe, quindi impostare una vista diversa da visualizzare in base alla classe. È abbastanza informazioni? Dimmi se qualcosa non è chiaro.

+0

Immagino che chiedere un esempio di lavoro sarebbe un po 'troppo. Ma se ne hai, lo apprezzerei molto. Ma questo è abbastanza buono. :) –

+1

Hanno anche dei buoni esempi di progetti :) Sono contento che tu l'abbia trovato utile. –

+0

@DylanGattey è possibile implementarlo come un menu, cioè sulla selezione dell'immagine che ti porta a una diversa visualizzazione nello storyboard? – codejunkie

4

Perché non utilizzare le miniature per rappresentare i video? Quando si preme l'immagine, il video viene caricato. Ciò farebbe sì che l'applicazione usasse meno potenza di elaborazione e consentisse l'integrazione con i metodi attuali di copertura del flusso iOS.

Se si desidera realizzare un flusso di copertura del video, è necessario scrivere il codice per crearlo da zero. Penserei che sia possibile però.

Problemi correlati