iOS中的CADisplayLink定时器

简介: iOS中的CADisplayLink定时器

说到定时器,在iOS中最常用的为NSTimer类,其实CADisplayLink类在某些场景下使用,要比NSTimer类更加适合。首先CADisplayLink也是一种定时器,并且其和屏幕的刷新率始终保持一致(很多时候会使用CADisplayLink来检测屏幕的帧率)。由于CADisplayLink的这种特性,使用它来实现流畅的动画效果非常合适。

CADisplayLink类非常简单,解析如下:

//创建CADisplayLink对象
/*
需要注意 定时器对象创建后 并不会马上执行 需要添加到runloop中
*/

  • (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;

//将当前定时器对象加入一个RunLoop中

  • (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;

//将当前定时器对象从一个RunLoop中移除 如果这个Runloop是定时器所注册的最后一个 移除后定时器将被释放

  • (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;

//将定时器失效掉 调用这个函数后 会将定时器从所有注册的Runloop中移除

  • (void)invalidate;

//当前时间戳
@property(readonly, nonatomic) CFTimeInterval timestamp;
//距离上次执行所间隔的时间
@property(readonly, nonatomic) CFTimeInterval duration;
//预计下次执行的时间戳
@property(readonly, nonatomic) CFTimeInterval targetTimestamp;
//设置是否暂停
@property(getter=isPaused, nonatomic) BOOL paused;
//设置预期的每秒执行帧数 例如设置为1 则以每秒一次的速率执行
@property(nonatomic) NSInteger preferredFramesPerSecond CA_AVAILABLE_IOS_STARTING(10.0, 10.0, 3.0);
//同上
@property(nonatomic) NSInteger frameInterval
CA_AVAILABLE_BUT_DEPRECATED_IOS (3.1, 10.0, 9.0, 10.0, 2.0, 3.0, "use preferredFramesPerSecond");
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=29qwh7m53g4kc

目录
相关文章
|
API 调度 iOS开发
iOS定时器 你真的会使用吗?
定时器的使用是软件开发基础技能,用于延时执行或重复执行某些方法。定时器 你真的会使用吗?iOS定时器详解
610 0
IOS_后台定时器
IOS_后台定时器
125 0
|
Serverless iOS开发
iOS定时器的应用
iOS定时器的应用
163 0
iOS定时器的应用
|
iOS开发
iOS中的定时器
iOS中定时器有三种,分别是NSTimer、CADisplayLink、dispatch_source,下面就分别对这三种计时器进行说明
181 0
|
iOS开发
iOS NSTimer 定时器用法总结
iOS NSTimer 定时器用法总结
263 0
|
iOS开发 Serverless
iOS - OC NSTimer 定时器
前言 @interface NSTimer : NSObject @interface CADisplayLink : NSObject 作用 在指定的时间执行指定的任务。
1369 0
|
iOS开发 Swift
iOS - Swift NSTimer 定时器
前言 public class NSTimer : NSObject 作用 在指定的时间执行指定的任务。 每隔一段时间执行指定的任务。 1、定时器的创建 当定时器创建完(不用 scheduled 的,添加到 runloop 中)后,该定时器将在初始化时指定的 ti 秒后自动触发。
2088 0
|
iOS开发
iOS中定时器NSTimer的使用
<p style="margin:10px auto; font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; font-size:13px; line-height:24px"> 1、初始化</p> <p style="margin:10px auto; font-family:Verdana,Geneva,Arial,Helve
1411 0
|
1月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。