2009-06-14 5 views
8

Мне интересно, какой самый эффективный способ сделать CALayer с изображением в нем.Самый эффективный способ создания CALayer с изображением в нем?

Я знаю, что вы можете загрузить UIImage, а затем вызвать [изображение CGImage], но это лучший способ обойти это? Насколько я могу судить по документации Apple, это единственный способ сделать это.

ответ

2

Ну, CGImage не CALayer, так что вы, очевидно, в результате чего некоторые шаги там, но я предполагаю, что вы знаете, что вы говорите, насколько подходило к CALayer или этажерки.

Если ваш вопрос о создании CGImage сек без использования UIImage, вы можете попробовать глядя на следующие функции:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

Если вы не знаете заранее, что вид изображения, просто используйте соответствующий метод. В противном случае вам нужно будет посмотреть подпись файла, чтобы увидеть, содержит ли он PNG или JFIF. Конечно, для этого требуется, чтобы вы реализовали CGDataProvider.

Я предполагаю, что это именно то, что класс UIImage уже делает. Если вы хотите выжать каждый бит эффективности от того, вы можете использовать один из следующих методов в UIImage классе:

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

Единственное различие между этими методами и

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

что imageNamed: кэширует изображение. Если вы используете один из первых методов, это не так.

+0

Спасибо за это. CGImageCreateWithJPEGDataProvider и CGImageCreateWithPNGDataProvider были именно тем, что я искал. –

17

Попробуйте это:

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

НТН