UIImage 与 CGImage 的 Swift 等价物?
Posted
技术标签:
【中文标题】UIImage 与 CGImage 的 Swift 等价物?【英文标题】:Swift equivalent for UIImage with CGImage? 【发布时间】:2015-03-12 20:27:25 【问题描述】:以下表达式的 Swift 等效项是什么?
@property (strong, nonatomic) NSMutableArray *assets;
cell.imageView.image = [UIImage imageWithCGImage:[[self.assets objectAtIndex:indexPath.row] thumbnail]];
我试过了:
private var assets: [AnyObject]
cell.imageView.image = UIImage(CGImage: self.assets[indexPath.row].thumbnail())
但这给出了错误:
Missing argument for parameter 'inBundle' in call
编辑:self.assets
具有来自以下表达式的对象:
ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock = ^(ALAsset *result, NSUInteger index, BOOL *stop)
if (result)
[self.assets insertObject:result atIndex:0];
;
【问题讨论】:
self.assets
中的对象是什么?
@matt 查看我的编辑。希望对您有所帮助。
【参考方案1】:
像这样声明属性:
var assets: [ALAsset]
然后,在一些方法的实际代码中:
let thumb = self.assets[indexPath.row].thumbnail().takeUnretainedValue()
cell.imageView.image = UIImage(CGImage:thumb)
在属性声明中,我向编译器揭示了这实际上是一个数组。否则,它不知道thumbnail()
是一个真正的方法,也不知道它返回的是什么东西。
在实际代码的第一行中,我正在处理 AssetLibrary 框架没有内存管理信息的事实;除非您以某种方式解决此问题,否则您无法继续使用 Swift。
所以,到下一行,我们得到了一个实际的 CGImage,可以继续使用它。
【讨论】:
什么时候必须使用takeUnretainedValue()
或takeRetainedValue()
?
本题相关:***.com/questions/29048826/…以上是关于UIImage 与 CGImage 的 Swift 等价物?的主要内容,如果未能解决你的问题,请参考以下文章
在swift中从UIImage / CGImage获取像素数据作为数组
Re: 快速从 UIImage/CGImage 获取像素数据作为数组
为啥我的 CGImage 是 UIImage 大小的 3 倍