我想知道最有效的方法是制作带有图像的CALayer。
我知道你可以加载一个UIImage,然后调用[image CGImage],但这是最好的解决方法吗?据我所知,从Apple的文档中可以看出这是你能做到的唯一方法。
答案 0 :(得分:18)
试试这个:
layer.contents = (__bridge id)[ uiimage CGImage ] ;
HTH
答案 1 :(得分:2)
好吧,CGImage
不是CALayer
,所以你显然已经离开了一些步骤,但我认为你知道你在谈论什么,只要画到{{ {1}}或诸如此类的。
如果您的问题是关于在不使用UIImage的情况下创建CALayer
,您可以尝试查看以下功能:
如果您事先知道它是什么类型的图像,只需使用适当的方法。否则,您需要查看文件签名以查看它是否包含PNG或JFIF。当然,这需要您实现CGImage
。
我认为这正是CGDataProvider
类已经在做的事情。如果你想从中挤出每一点效率,可以在UIImage
类中使用以下方法之一:
UIImage
这些方法和
之间的唯一区别+ (UIImage *)imageWithContentsOfFile:(NSString *)path
+ (UIImage *)imageWithData:(NSData *)data
是+ (UIImage *)imageNamed:(NSString *)name
缓存图像。如果您使用第一种方法之一,则不会。