3 Stimmen

Sie haben eine CALayer mit vielen Sublayern. Wenn setNeedsDisplay auf einem Sublayer aufgerufen wird, erhalte ich einen ungültigen Kontextfehler

Ich habe gerade mein Spiel umgeschrieben, um die Kernanimation zu verwenden, um es schneller zu machen. Ich habe eine UIView mit einer Ebene, die viele Sublayer (die Spiel-"Kacheln") enthält. Die Kachel-Sublayer sind eigentlich CALayer-Unterklassen, die ihren eigenen Inhalt mit drawInContext: . Wenn zum Beispiel eine Kachel ausgewählt wird, muss sie neu gezeichnet werden, also rufe ich [tileLayer setNeedsDisplay] und ich erhalte eine Reihe von Fehlern bei ungültigem Kontext. Wenn ich aufrufe [mainView setNeedsDisplay] o [mainView.layer setNeedsDisplay] wird keine der Kacheln neu gezeichnet. Wie kann ich eine einzelne Kachel (CALayer-Unterklasse) zum Neuzeichnen bringen?

EDIT: Aus den sehr hilfreichen Kommentaren konnte ich herausfinden, dass dies nur passiert, wenn die CALayer-Unterklasse ein Bild zeichnet. Hier sind die Fehler:

<Error>: CGContextSaveGState: invalid context 0x0
<Error>: CGContextSetBlendMode: invalid context 0x0
<Error>: CGContextSetAlpha: invalid context 0x0
<Error>: CGContextTranslateCTM: invalid context 0x0
<Error>: CGContextScaleCTM: invalid context 0x0
<Error>: CGContextDrawImage: invalid context 0x0
<Error>: CGContextRestoreGState: invalid context 0x0

Hier ist die Code-Zeile, die die Fehler verursacht:

[[UIImage imageNamed:@"flag.png"] drawInRect:self.bounds];

Gibt es eine andere Art und Weise, die ich ein Bild in einer CALayer-Unterklasse zeichnen sollte?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X