欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CADisPlayLink

程序员文章站 2024-01-14 13:36:40
...

1.CADisPlayLink
系统级定时器 ,父类NSObject.他的调用频率和设备屏幕刷新频率相同。
和NSTimer一样也需要RunLoop支持。
2.相关API

 创建
 +(CADisPlayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel

将计时器加入到runloop中,必须加入到runloop中才有作用
 -(void)addToRunLoop:(NSRunLoop*)runloop forMode:(NSRunLoopMode)mode;
 
将计时器从runloop中删除
-(void)rmoveFromRunloop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;

销毁定时器
-(void)invalidate;


常用属性
duration 两次屏幕刷新的时候间隔,通过此f值g可以拿到屏幕的刷新频率,苹果一般是60hz(一秒60次)是个估值,

NSInteger  frameInterval  多少次屏幕刷新后才调用一次方法 10以后被废弃,默认刷新一次调用一次

timestamp 屏幕显示的上一帧的时间戳,是CoreAnimation使用的时间格式

 targetTimestamp 屏幕显示的下一帧时间戳


paused 是否暂停计时器

 preferredFramesPerSecond 一秒内执行多次方法 默认60

demo

  CADisplayLink *disLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(test)];
    [disLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    //每秒钟调用多次 默认60.
    disLink.preferredFramesPerSecond = 10;
    //是否暂停
    disLink.paused = NO;

-(void)test{
    
    NSLog(@"测试");
    
}

上一篇: C语言判断是否回文字符串

下一篇: