CADisplaylink跑马灯

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一直保持移动,移动到屏幕尽头执行返回最初位置的代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,745评论 4 61
  • 001 过度规划未来 做事情有计划,可以高效省时。但太过于关注诗和远方,却没有踏实地做好当下的事情,白搭! 把今天...
    幽兰君阅读 1,756评论 2 2
  • 一月份读了两本英文书,一本是The Subtle Art of Not Giving a Fuck , 一本是Ch...
    慢慢树阅读 2,578评论 0 1
  • 研究中国非富二代男人泡优质美女历史,有一定收获。从十八岁到一百岁我都研究下[悠闲] 其实当大学老师挺好,如...
    冥藏之人阅读 1,405评论 0 0
  • 淡绿的花窗帘摇摇晃晃 偶有炽烈的阳光钻进小房 窗外的田野树叶一片一叶变黄 又是一年秋色黄 成了金子的天堂 点点金光...
    夏夜之空阅读 2,523评论 4 3

友情链接更多精彩内容