14 Stimmen

Woher weiß ich, wann ein CATiledLayer alle sichtbaren Kacheln gerendert hat?

Ich arbeite an einer Anwendung, in der ich PDF-Inhalte in einem CATiledLayer wiedergebe. Ich möchte eine Methode auslösen, nachdem das Rendering der gekachelten Ebene abgeschlossen ist.

Gibt es eine Delegate-Methode, die sofort aufgerufen wird, nachdem das Rendern aller sichtbaren Kacheln abgeschlossen ist? Gibt es eine andere Möglichkeit zu wissen, wann dies abgeschlossen ist?

3voto

ssj Punkte 881

Sie können die Anzahl der Kacheln berechnen, die Ihre Zeichnung benötigt, bevor sie gezeichnet wird. In drawRect der Kachelansicht wird jede Kachel nur EINMAL gezeichnet. Legen Sie also einen Zähler in einen Teil des DrawRects, der eine neue Kachel aufruft. Wenn Ihr Zähler die Gesamtzahl erreicht, rufen Sie Ihre Methode auf.

Denken Sie daran, dass das Zeichnen von Kacheln auf einem Hintergrundfaden erfolgt.

0voto

lxt Punkte 31030

Das erfordert etwas kreatives Denken. Ich hatte ein ähnliches Problem, als ich das Rendering einer gekachelten Ebene mitten im Zyklus abbrechen musste. Die Art und Weise, wie ich das Problem gelöst habe, ist etwas komplex, scheint aber recht gut zu funktionieren. Es geht darum, die Zeichenaufrufe für die gekachelte Ebene in eine NSThread . Fäden haben eine isFinished bool, die Sie per Schlüsselwert beobachten können, um festzustellen, wann eine gekachelte Ebene ihre Darstellung abgeschlossen hat.

Wenn Sie sich mit Threading unter iOS nicht auskennen, kann dies mehr Ärger bedeuten, als es wert ist, aber Sie haben den Vorteil, dass Sie wissen, wann das Rendering beendet ist, und dass Sie die Thread-Operation (und damit das Rendering) bei Bedarf abbrechen können.

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