最有效的方法来创建一个带有图像的CALayer?

Mic*_*ord 8 iphone calayer uiimage cgimage

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

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

nie*_*bot 19

试试这个:

layer.contents = (__bridge id)[ uiimage CGImage ] ;
Run Code Online (Sandbox Code Playgroud)

HTH


Ed *_*rty 2

好吧, aCGImage不是 a CALayer,所以你显然留下了一些步骤,但我假设你知道你在说什么,就绘制到 aCALayer或其他什么而言。

如果您的问题是关于CGImage在不使用 UIImage 的情况下创建 s,您可以尝试查看以下函数:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

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

我认为这正是UIImage班级已经在做的事情。如果您想从中榨取每一点效率,您可以在类中使用以下方法之一UIImage

+ (UIImage *)imageWithContentsOfFile:(NSString *)path
+ (UIImage *)imageWithData:(NSData *)data
Run Code Online (Sandbox Code Playgroud)

这些方法之间的唯一区别是

+ (UIImage *)imageNamed:(NSString *)name
Run Code Online (Sandbox Code Playgroud)

imageNamed:缓存图像。如果您使用第一种方法,则不会。