Как программно вставить изображение с помощью Swift?

У меня есть рабочий код, в котором я копирую изображение в UIPasteboard, но я не могу найти способ программно реализовать функциональность PASTE. Любая идея или совет?


person Carlos    schedule 16.03.2016    source источник


Ответы (3)


Следующий фрагмент кода может работать. Убедитесь, что вы проводите тестирование на устройстве.

let image = UIImage(named: "person.png")
UIPasteboard.generalPasteboard().image = image;

на основе комментария вы можете сделать это следующим образом. Я помещаю здесь код Objective-C, надеюсь, вы поняли идею, а затем конвертируете его в Swift.

NSData* pasteData = [[UIPasteboard generalPasteboard] dataForPasteboardType:(NSString*)kUTTypeJPEG];

вы можете найти быстрое решение по следующему адресу: Swift UIPasteboard не копирует PNG

person casillas    schedule 16.03.2016
comment
Этот код позволяет мне вставить изображение только в UIPasteboard, мне нужно вставить из UIPasteboard. Я не хочу просить пользователя вставить его вручную. - person Carlos; 16.03.2016
comment
Касильяс, не могли бы вы сказать мне, является ли эта строчка правильным переводом слова «свифт»? var pasteData: NSData = UIPsteboard.generalPasteboard().dataForPasteboardType(String(kUTTypeJPEG)) - person Carlos; 17.03.2016

В качестве альтернативы вы можете использовать NSData. На Симуляторе тоже работает.

// Copy
let image = UIImage(named: "sample")
let imageData = UIImageJPEGRepresentation(image!, 1)
UIPasteboard.general.setData(imageData!, forPasteboardType: "image")

// Paste
let imageData = UIPasteboard.general.data(forPasteboardType: "image")
let image = UIImage(data:imageData!)
copiedImage.image = image
person Stanley Yong    schedule 13.01.2017

Свифт 3

Если изображение было скопировано из другого приложения (например, Safari), я добавляю его в свое приложение именно так. Я запускаю это из UIAlertController как UIAlertAction.

let pasteboard = UIPasteboard.general
if pasteboard.hasImages {
     myImage.image = pasteboard.image
}
person Steve Thoonen    schedule 11.03.2017