使用UIPasteBoard复制图像(Swift)

12

最近我看到了一个项目,用户可以从自定义键盘中点击GIF,然后会出现一个“已复制”工具提示。我有一个问题:

有人能给我一些示例代码吗?我知道如何使用UIPasteboard及其函数,但是当我将UTI类型“public.png”放入此函数时,似乎无法使其正常工作:(我注意到在Objective-C中它是“@public.png”,但是我放置了“public.png”,我找不到在线来源)

 let imageURL = NSString(string:NSBundle.mainBundle().pathForResource("test", ofType: "png")!)
        var data = NSData(contentsOfURL: NSURL(string:imageURL)!)
        UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: "public.png")
2个回答

17

尝试使用以下代码:

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

您可以在这里了解它的工作原理!

希望这可以帮到您。

Swift 5.1

UIPasteboard.general.image = image

我可能需要在实际设备上尝试一下。模拟器无法让我看到我的“粘贴”图像。 - Guled
1
那是个好主意。在iOS中有很多需要在实体设备上测试的工具。 - user2277872

9

使用UIPasteboard.generalPasteboard().image = image;时,似乎图像没有被复制到剪贴板中。取而代之的是,请尝试下一段代码,它还解释了如何替换"public.png"字符串:

// The Pasteboard is nil if full access is not granted
// 'image' is the UIImage you about to copy to the pasteboard
if let pb = UIPasteboard.generalPasteboard() {
    let type = UIPasteboardTypeListImage[0] as! String
    if !type.isEmpty {
        pb.setData(UIImagePNGRepresentation(image), forPasteboardType: type)
        if let readData = pb.dataForPasteboardType(type) {
            let readImage = UIImage(data: readData, scale: 2)
            println("\(image) == \(pb.image) == \(readImage)")
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接