2015-11-12 13 views
6

Sto provando a copiare un'immagine GIF su UIPasteboard in modo rapido, al momento copia solo la versione statica dell'immagine e sembra convertirla in PNG guardando l'estensione del file quando la carico da qualche parte.Copia GIF su UIPasteboard

Mi chiedevo se qualcuno avesse idea di come ottenere questo risultato? Tutte le altre soluzioni che ho trovato sembrano funzionare solo quando si ottiene NSData da un URL piuttosto che da un'immagine nel pacchetto

+0

Mostra come stai copiando l'immagine sul tavolo di montaggio. – JAL

+0

Sto usando 'UIPasteboard.generalPasteboard(). Image = imageToCopy' per copiare GIF al momento. –

risposta

7

Per tutti coloro che mai si verifica questo problema sono riuscito a trovare una soluzione

let url: NSURL = NSBundle.mainBundle().URLForResource("\(self.imageNames[indexPath.row])", withExtension: ".gif")! 
let data: NSData = NSData(contentsOfURL: url)! 
UIPasteboard.generalPasteboard().setData(data, forPasteboardType: "com.compuserve.gif") 

Alla fine è necessario utilizzare un URL ed estrarre lo NSData della GIF da tale URL.

Qui sto ricevendo l'URL della GIF che è nel mio pacchetto, cercandolo usando il nome e l'estensione dell'immagine. Sto quindi impostando i dati nel pasteboard e nel bingo abbiamo una GIF animata quando incolliamo il risultato dal tavolo di montaggio

+0

come posso caricare se otterrò i file .gif dinamicamente dal server? – Ramakrishna

1

Non sembra che la proprietà dell'immagine sul tavolo di montaggio supporti il ​​tipo GIF.

The associated array of representation types is UIPasteboardTypeListImage, which includes types kUTTypePNG and kUTTypeJPEG.

si potrebbe probabilmente fare questo utilizzando il NSData dal GIF però:

import MobileCoreServices 

// ... 

var image = UIImage(...) 
let data = NSData(bytes: &image, length: sizeof(UIImage)) 
UIPasteboard.generalPasteboard().setData(data, forPasteboardType: kUTTypeGIF as String)) // com.compuserve.gif 
+0

Grazie per la rapida risposta! Questo funziona in gran parte e imposta l'immagine come GIF, ma non lo converte in una 'immagine'. Invece, quando copio il contenuto degli appunti nei messaggi, ad esempio, verrà visualizzato come un file e non come una GIF visibile che potrebbe essere utilizzato con un'app come GIPHY. Grazie –

+0

Hmm, ok dovrò continuare a pensare a una migliore implementazione. – JAL

+0

Deve essere qualcosa a che fare con il modo in cui viene creato NSData perché la stessa cosa accade quando si imposta il tipo di cartoncino come PNG o JPEG. Anche la dimensione del file che viene inviato è di soli 8 byte che ovviamente non possono essere corretti –

Problemi correlati