Скопировать GIF в UIPasteboard

Я пытаюсь скопировать изображение GIF в UIPasteboard в быстром режиме, на данный момент он копирует только статическую версию изображения и, кажется, преобразует его в PNG, глядя на расширение файла, когда я загружаю его куда-нибудь.

Интересно, есть ли у кого-нибудь идеи, как этого добиться? Все другие решения, которые я нашел, работают только при получении NSData из URL-адреса, а не из изображения в комплекте.


person jackchmbrln    schedule 12.11.2015    source источник
comment
Пожалуйста, покажите, как вы сейчас копируете изображение на монтажный стол.   -  person JAL    schedule 12.11.2015
comment
В настоящее время я использую UIPasteboard.generalPasteboard().image = imageToCopy для копирования GIF.   -  person jackchmbrln    schedule 12.11.2015


Ответы (2)


Для тех, кто когда-либо сталкивался с этой проблемой, мне удалось найти решение

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")

Как оказалось, вам нужно использовать URL-адрес и извлечь NSData GIF из этого URL-адреса.

Здесь я получаю URL-адрес GIF, который находится в моем комплекте, и ищу его, используя имя и расширение изображения. Затем я устанавливаю данные в монтажный стол и бинго, у нас есть анимированный GIF при вставке результата из монтажного стола.

person jackchmbrln    schedule 13.11.2015
comment
как я могу загрузить, если я буду получать файлы .gif динамически с сервера? - person Ramakrishna; 14.10.2016

Не похоже, что свойство изображения на монтажном столе поддерживает тип GIF.

связанный массив типов представления — UIPasteboardTypeListImage, который включает типы kUTTypePNG и kUTTypeJPEG.

Вы, вероятно, могли бы сделать это, используя NSData из GIF:

import MobileCoreServices

// ...

var image = UIImage(...)
let data = NSData(bytes: &image, length: sizeof(UIImage))
UIPasteboard.generalPasteboard().setData(data, forPasteboardType: kUTTypeGIF as String)) // com.compuserve.gif
person JAL    schedule 12.11.2015
comment
Спасибо за быстрый ответ! Это в основном работает и устанавливает изображение как GIF, но, к сожалению, не преобразует его в «изображение». Вместо этого, когда я копирую содержимое буфера обмена в сообщения, например, оно будет отображаться как файл, а не как просматриваемый GIF, как это было бы с таким приложением, как GIPHY. Спасибо - person jackchmbrln; 12.11.2015
comment
Хм, хорошо, мне придется думать о лучшей реализации. - person JAL; 12.11.2015
comment
Это должно быть как-то связано со способом создания NSData, потому что то же самое происходит при установке типа картона как PNG или JPEG. Кроме того, размер отправляемого файла составляет всего 8 байт, что, очевидно, не может быть правильным. - person jackchmbrln; 12.11.2015