在运行时创建任何颜色的图像资源,当用作遮罩时,以及当它是 PDF 时,在任何分辨率时。
如果您在使用 CocoaPods,请在您的 Podfile 中添加以下内容:
pod 'FTAssetRenderer'
否则,只需将 Source
目录中的文件添加到您的项目中。
如果您有一个用作不同颜色图像遮罩的位图图像,则可以使用如下方式:
FTImageAssetRenderer *renderer = [FTAssetRenderer rendererForImageNamed:@"my-icon" withExtension:@"png"];
renderer.targetColor = [UIColor redColor];
UIImage *result = [renderer imageWithCacheIdentifier:@"red"];
另一方面,如果您有一个基于矢量的 PDF 图像,通常您还需要指定它应该渲染的大小
FTPDFAssetRenderer *renderer = [FTAssetRenderer rendererForPDFNamed:@"my-scalable-icon"];
renderer.targetColor = [UIColor blueColor];
renderer.targetSize = CGSizeMake(123, 456);
UIImage *result = [renderer imageWithCacheIdentifier:@"without-preserving-aspect-ratio"];
在上面的例子中,显式地给出了结果图像的宽度和高度,这可能会导致图像无法保留原始的宽高比。为了确保比例被保留,提供了一些便利的方法
-[FTPDFAssetRenderer fitWidth:]
会使结果图像的宽度等于指定的宽度,而高度基于此。-[FTPDFAssetRenderer fitHeight:]
会使结果图像的高度等于指定的宽度,而宽度基于此。-[FTPDFAssetRenderer fitSize:]
会使图像尽可能大,但在这个边界大小内,同时不裁剪图像的任何部分,这样只能完全覆盖两个侧面中的一侧。默认情况下,结果图片会被缓存在磁盘上。对于每种不同的目标颜色,应该使用不同的缓存标识符。例如,对于控件,您可能使用如 normal
、highlighted
和 selected
等标识符。
基于以下工作的成果:
感谢 Peter Steinberger(以 PSPDFKit 著称)在创建此库期间提供的宝贵建议。