Frage

Ich frage mich, was der effizienteste Weg, um eine CALayer mit einem Bild in ihm zu machen.

Ich weiß, dass Sie eine UIImage laden und rufen Sie dann [Bild CGImage] aber ist dies der beste Weg zu gehen darüber? Soweit ich von der Apple-Dokumentation kann sagen, dies ist der einzige Weg, es zu tun.

War es hilfreich?

Lösung

Nun, ein CGImage ist kein CALayer, so verlassen Sie offensichtlich einige Schritte gibt, aber ich nehme an, Sie wissen, was Sie reden, bis zu einem CALayer oder Dingsbums zu ziehen.

Wenn Sie Ihre Frage ist CGImages zu schaffen, ohne eine UIImage zu verwenden, können Sie versuchen, in die folgenden Funktionen suchen:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

Wenn Sie wissen, zufällig vorher, welche Art von Bild ist es, verwenden Sie einfach die entsprechende Methode. Andernfalls müssen Sie bei der Dateisignatur, um zu sehen, ob es PNG oder JFIF enthält. Natürlich ist dies erfordert, dass Sie eine CGDataProvider implementieren.

Ich nehme an, das ist genau das, was die UIImage Klasse bereits tut. Wenn Sie jedes Bit der Effizienz von der Squeeze-out möchten, können Sie eine der folgenden Methoden in der UIImage-Klasse verwenden:

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

Der einzige Unterschied zwischen diesen Methoden und

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

ist, dass imageNamed: das Bild zwischenspeichert. Wenn Sie eine der ersten Methoden verwenden, es funktioniert nicht.

Andere Tipps

Versuchen Sie folgendes:

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

HTH

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top