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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录