欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

iOS中的CADisplayLink定时器

发布时间:2025/7/14 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 iOS中的CADisplayLink定时器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

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 frameIntervalCA_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

转载于:https://my.oschina.net/u/2340880/blog/1840972

总结

以上是生活随笔为你收集整理的iOS中的CADisplayLink定时器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。