私はSDWebImag
eを使用して画像をUICollectionView
にロードしています。ユーザーが画像をクリックすると、その画像をPasteboard
にコピーして他のアプリに貼り付けることができます。SDWebImageを使用してNSDataとして画像をペーストボードにコピー
私が現在didSelectItemAtIndexPath
メソッドで使用しているコードは、画像をコピーするためにウェブに戻っています。しかし、イメージはすでにユーザーのキャッシュに保存されているはずです。
を使用して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
}
}
「let image = SDImageCache.sharedImageCache.imageFromDiskCacheForKey(url!);を試してください。 let data = UIImagePNGRepresentation(image); '? 'image'が存在するかどうかをチェックする必要があるかもしれません(イメージはすでにキャッシュにあります)。 – Larme
感謝!これはうまくいった。そして、あなたは正しいです、私は画像が存在するかどうかをチェックしなければなりません。そうでなければ、それがなければクラッシュします。 'let!data = UIImagePNGRepresentation(image) 'の前に' image!= nil'をチェックして、元のコードでオンラインで画像を探すif文を追加しました。 –