CADisplaylink跑马灯

2018-05-08  本文已影响12人  倪大头

CADisplayLink 是一个用于显示的定时器,以屏幕刷新频率同步绘图

用UILabel举例:

runLabel = [[UILabel alloc]init];
runLabel.text = @"hello world";
runLabel.textColor = [UIColor whiteColor];
runLabel.font = [UIFont systemFontOfSize:18];
[runLabel sizeToFit];
runLabel.center = CGPointMake(UI_SCREEN_WIDTH + runLabel.frame.size.width/2, kScaleY*200 + runLabel.frame.size.height/2);
[self.view addSubview:runLabel];

创建定时器:

CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(viewRun)];
//[displayLink setPaused:YES];//暂停
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];//把它加入到runloop里它才会开始运作

CADisplayLink有一个整型的frameInterval属性,指定了间隔多少帧之后才执行,默认值是1,意味着每次屏幕更新之前都会执行一次,上面代码反复执行一个 viewRun 方法:

- (void)viewRun {
    if (runLabel.center.x < -runLabel.frame.size.width/2) {
        runLabel.center = CGPointMake(UI_SCREEN_WIDTH + runLabel.frame.size.width/2, runLabel.center.y);
    }else {
        runLabel.center = CGPointMake(runLabel.center.x - 1, runLabel.center.y);
    }
}

viewRun方法只是移动了视图的center,随着屏幕刷新label一直保持移动,移动到屏幕尽头执行返回最初位置的代码

上一篇下一篇

猜你喜欢

热点阅读