9

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

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

4

2 回答 2

20

试试这个:

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

高温高压

于 2011-05-10T07:05:58.077 回答
2

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

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

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

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

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

+ (UIImage *)imageWithContentsOfFile:(NSString *)path
+ (UIImage *)imageWithData:(NSData *)data

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

+ (UIImage *)imageNamed:(NSString *)name

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

于 2009-06-14T16:30:30.633 回答