2015-11-12 18 views
6

Tôi đang cố gắng sao chép hình ảnh GIF vào UIPasteboard nhanh chóng, tại thời điểm nó chỉ sao chép phiên bản tĩnh của hình ảnh và có vẻ như chuyển đổi sang PNG để xem phần mở rộng của tệp khi tôi tải lên một vài nơi.Sao chép GIF vào UIPasteboard

Tự hỏi liệu có ai có ý tưởng nào về cách đạt được điều này không? Tất cả các giải pháp khác mà tôi thấy dường như chỉ hoạt động khi nhận NSData từ URL chứ không phải từ hình ảnh trong gói

+0

Vui lòng cho biết cách bạn hiện đang sao chép hình ảnh vào bảng mẫu. – JAL

+0

Tôi đang sử dụng 'UIPasteboard.generalPasteboard(). Image = imageToCopy' để sao chép GIF hiện tại. –

Trả lời

7

Đối với những ai đã từng gặp vấn đề này, tôi cố gắng tìm một giải pháp

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

Khi nó quay ra bạn cần phải sử dụng URL và trích xuất NSData của GIF từ URL đó.

Ở đây tôi nhận được URL của GIF nằm trong gói của tôi, tìm kiếm nó bằng tên và phần mở rộng của hình ảnh. Sau đó tôi thiết lập dữ liệu trong bảng và bingo, chúng tôi có GIF động khi dán kết quả từ bảng mẫu

+0

làm thế nào tôi có thể tải nếu tôi sẽ nhận được các tập tin .gif động từ máy chủ? – Ramakrishna

1

Có vẻ như thuộc tính hình ảnh trên bảng tương thích không hỗ trợ loại GIF.

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

Bạn có thể làm điều này bằng cách sử dụng NSData từ GIF mặc dù:

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

Cảm ơn bạn đã trả lời nhanh! Điều này chủ yếu là hoạt động và không đặt hình ảnh như một GIF nhưng không may mắn thay không chuyển đổi nó thành một 'hình ảnh'. Thay vào đó, khi tôi sao chép nội dung của khay nhớ tạm vào các tin nhắn, ví dụ như nó sẽ hiển thị dưới dạng một tệp chứ không phải là một GIF có thể xem được mà nó sẽ thực hiện với một ứng dụng như GIPHY. Cảm ơn –

+0

Hmm, ok Tôi sẽ phải tiếp tục suy nghĩ về việc triển khai tốt hơn. – JAL

+0

Nó phải là một cái gì đó để làm với cách NSData đang được tạo ra bởi vì điều tương tự xảy ra khi thiết lập các loại pasteboard như PNG hoặc JPEG. Ngoài ra kích thước của tập tin đang được gửi là chỉ 8 byte mà rõ ràng là không thể được quyền –

Các vấn đề liên quan