2016-04-15 15 views

Antwort

3

Schamlos Kopieren/Einfügen the official documentation die Zeichnung von uiview synchronisieren:

Ein CADisplayLink Objekt ist ein Timer-Objekt, das Ihre Anwendung ermöglicht es seiner Zeichnung auf die Aktualisierungsrate der Anzeige zu synchronisieren.

Ihre Anwendung erstellt eine neue Anzeigeverbindung, die ein Zielobjekt und eine Auswahl bereitstellt, die beim Aktualisieren des Bildschirms aufgerufen werden. Als Nächstes fügt Ihre Anwendung die Anzeigeverbindung zu einer Ausführungsschleife hinzu.

Sobald der Anzeige-Link mit einer Laufschleife verknüpft ist, wird der Selektor auf dem Ziel aufgerufen, wenn der Inhalt des Bildschirms aktualisiert werden muss. Das Ziel kann die Zeitmarkeneigenschaft der Anzeigeverbindung lesen, um die Zeit abzurufen, in der das vorherige Bild angezeigt wurde. Beispielsweise kann eine Anwendung, die Filme anzeigt, den Zeitstempel verwenden, um zu berechnen, welcher Videoframe als nächstes angezeigt wird. Eine Anwendung, die eigene Animationen ausführt, verwendet möglicherweise den Zeitstempel, um zu bestimmen, wo und wie angezeigte Objekte im nächsten Frame angezeigt werden. Die duration -Eigenschaft gibt die Zeit zwischen Frames an. Sie können diesen Wert in Ihrer Anwendung verwenden, um die Bildrate der Anzeige zu berechnen, die ungefähre Zeit, die das nächste Bild angezeigt wird, und das Zeichnungsverhalten so anzupassen, dass das nächste Bild rechtzeitig zur Anzeige vorbereitet wird.

Ihre Anwendung kann Benachrichtigungen deaktivieren, indem sie die paused-Eigenschaft auf YES setzt. Wenn Ihre Anwendung in der vorgesehenen Zeit keine Bilder bereitstellen kann, sollten Sie möglicherweise eine niedrigere Bildrate wählen. Eine Anwendung mit einer langsameren, aber konsistenten Bildrate erscheint dem Benutzer flüssiger als eine Anwendung, die Frames überspringt. Sie können die Zeit zwischen den Bildern erhöhen (und die scheinbare Bildrate verringern), indem Sie die Eigenschaft frameInterval ändern.

Wenn Ihre Anwendung mit einer Anzeigeverbindung endet, sollte sie invalidate aufrufen, um sie aus allen Ausführungsschleifen zu entfernen und sie vom Ziel zu trennen.

CADisplayLink sollte nicht unterklassiert sein.

Verwandte Themen