使用 SDWebImage 将图像作为 NSData 复制到粘贴板
Using SDWebImage to copy an image as NSData to Pasteboard
我正在使用 SDWebImag
e 将图像加载到 UICollectionView
。然后,当用户点击图片时,我想将其复制到 Pasteboard
,以便他们可以将其粘贴到其他应用程序中。
我目前在didSelectItemAtIndexPath
方法中使用的代码返回到网络复制图像。但是图像应该已经在用户的缓存中了。
如何使用 SDWebImage
为 NSData
抓取图像?
这样应用程序将首先检查图片的缓存。当我尝试使用 SDWebImage
.
时,我将 运行 放入 DataType
问题
这是我当前的代码。我想修复 didSelectItemAtIndexPath
:
中的代码
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let iCell = collectionView.dequeueReusableCellWithReuseIdentifier("ImageCollectionViewCell", forIndexPath: indexPath) as! ImageCollectionViewCell
let url = NSURL(string: self.imgArray.objectAtIndex(indexPath.row) as! String)
iCell.imgView.sd_setImageWithURL(url)
return iCell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
// Change code below to use SDWebImage
let url = NSURL(string: self.imgArray.objectAtIndex(indexPath.row) as! String)
let data = NSData(contentsOfURL: url!)
if data != nil {
UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: kUTTypePNG as String)
} else {
// Do nothing
}
}
SDWebImage 有缓存。您可以使用 SDImageCache
访问它。允许自定义(缓存的不同命名空间)。
let image = SDImageCache.sharedImageCache.imageFromDiskCacheForKey(url!)
if image != nil
{
let data = UIImagePNGRepresentation(image);
}
您必须检查 image
是否不是 nil
,因为下载是异步的。因此用户可能会触发 collectionView:didSelectItemAtIndexPath:
而图像尚未下载,并且本身不存在于缓存中。
我正在使用 SDWebImag
e 将图像加载到 UICollectionView
。然后,当用户点击图片时,我想将其复制到 Pasteboard
,以便他们可以将其粘贴到其他应用程序中。
我目前在didSelectItemAtIndexPath
方法中使用的代码返回到网络复制图像。但是图像应该已经在用户的缓存中了。
如何使用 SDWebImage
为 NSData
抓取图像?
这样应用程序将首先检查图片的缓存。当我尝试使用 SDWebImage
.
DataType
问题
这是我当前的代码。我想修复 didSelectItemAtIndexPath
:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let iCell = collectionView.dequeueReusableCellWithReuseIdentifier("ImageCollectionViewCell", forIndexPath: indexPath) as! ImageCollectionViewCell
let url = NSURL(string: self.imgArray.objectAtIndex(indexPath.row) as! String)
iCell.imgView.sd_setImageWithURL(url)
return iCell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
// Change code below to use SDWebImage
let url = NSURL(string: self.imgArray.objectAtIndex(indexPath.row) as! String)
let data = NSData(contentsOfURL: url!)
if data != nil {
UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: kUTTypePNG as String)
} else {
// Do nothing
}
}
SDWebImage 有缓存。您可以使用 SDImageCache
访问它。允许自定义(缓存的不同命名空间)。
let image = SDImageCache.sharedImageCache.imageFromDiskCacheForKey(url!)
if image != nil
{
let data = UIImagePNGRepresentation(image);
}
您必须检查 image
是否不是 nil
,因为下载是异步的。因此用户可能会触发 collectionView:didSelectItemAtIndexPath:
而图像尚未下载,并且本身不存在于缓存中。