CADisplayLink object is a timer object that allows your application to synchronize its drawing to the refresh rate of the display.
- iOS 3.1+
- tvOS 9.0+
Your application initializes a new display link, providing a target object and a selector to be called when the screen is updated. To synchronize your display loop with the display, your application adds it to a run loop using the
Once the display link is associated with a run loop, the selector on the target is called when the screen’s contents need to be updated. The target can read the display link’s
timestamp property to retrieve the time that the previous frame was displayed. For example, an application that displays movies might use the timestamp to calculate which video frame will be displayed next. An application that performs its own animations might use the timestamp to determine where and how displayed objects appear in the upcoming frame. The
duration property provides the amount of time between frames. You can use this value in your application to calculate the frame rate of the display, the approximate time that the next frame will be displayed, and to adjust the drawing behavior so that the next frame is prepared in time to be displayed.
Your application can disable notifications by setting the
isPaused property to
true. Also, if your application cannot provide frames in the time provided, you may want to choose a slower frame rate. An application with a slower but consistent frame rate appears smoother to the user than an application that skips frames. You can define the number of frames per second by setting the
When your application finishes with a display link, it should call
invalidate() to remove it from all run loops and to disassociate it from the target.
Listing 1 shows how you can create a display link and add it to the current run loop. The display link invokes the
step function, which simply prints the current timestamp, with each screen update.
CADisplayLink should not be subclassed.