iOS开发 CADisplayLink 计时器 oc代码
CADisplayLink 是一个计时器类,它可以根据屏幕的刷新频率来定时触发事件。以下是使用 CADisplayLink 创建计时器的 Objective-C 代码示例:
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
@property (nonatomic, strong) CADisplayLink *displayLink;
@property (nonatomic, assign) NSTimeInterval startTime;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(timerFired:)];
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
self.startTime = CACurrentMediaTime();
}
- (void)timerFired:(CADisplayLink *)displayLink {
NSTimeInterval currentTime = CACurrentMediaTime();
NSTimeInterval elapsedTime = currentTime - self.startTime;
// 处理每帧的逻辑
// ...
}
@end
在上述代码中,我们首先在 viewDidLoad 方法中创建了一个 CADisplayLink 对象,并指定了一个回调方法 timerFired:。然后将该 CADisplayLink 对象添加到当前 runloop 的默认模式中。接下来,我们记录了计时器启动的时间。
在 timerFired: 方法中,我们获取当前时间,并计算出自计时器启动以来的时间间隔。然后可以在该方法中处理每帧的逻辑,例如更新 UI 或执行其他操作。
需要注意的是,CADisplayLink 默认会在每一帧刷新时触发回调方法,因此可以认为它的触发频率与屏幕的刷新频率相同。如果需要调整计时器的触发频率,可以通过 preferredFramesPerSecond 属性来设置。
原文地址: http://www.cveoy.top/t/topic/jbsZ 著作权归作者所有。请勿转载和采集!