创建带有图像的CALayer的最有效方法是什么?

时间:2009-06-14 10:32:51

标签: iphone uiimage calayer cgimage

我想知道最有效的方法是制作带有图像的CALayer。

我知道你可以加载一个UIImage,然后调用[image CGImage],但这是最好的解决方法吗?据我所知,从Apple的文档中可以看出这是你能做到的唯一方法。

2 个答案:

答案 0 :(得分:18)

试试这个:

layer.contents = (__bridge id)[ uiimage CGImage ] ;

HTH

答案 1 :(得分:2)

好吧,CGImage不是CALayer,所以你显然已经离开了一些步骤,但我认为你知道你在谈论什么,只要画到{{ {1}}或诸如此类的。

如果您的问题是关于在不使用UIImage的情况下创建CALayer,您可以尝试查看以下功能:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

如果您事先知道它是什么类型的图像,只需使用适当的方法。否则,您需要查看文件签名以查看它是否包含PNG或JFIF。当然,这需要您实现CGImage

我认为这正是CGDataProvider类已经在做的事情。如果你想从中挤出每一点效率,可以在UIImage类中使用以下方法之一:

UIImage

这些方法和

之间的唯一区别
+ (UIImage *)imageWithContentsOfFile:(NSString *)path
+ (UIImage *)imageWithData:(NSData *)data

+ (UIImage *)imageNamed:(NSString *)name 缓存图像。如果您使用第一种方法之一,则不会。