首页
学习
活动
专区
圈层
工具
发布

iOS 性能监测之FPS

CADisplayLink 是一个用于显示的定时器, 它可以让用户程序的显示与屏幕的硬件刷新保持同步,iOS系统中正常的屏幕刷新率为60Hz(60次每秒)。...CADisplayLink可以以屏幕刷新的频率调用指定selector,也就是说每次屏幕刷新的时候就调用selector,那么只要在selector方法里面统计每秒这个方法执行的次数,通过次数/时间就可以得出当前屏幕的刷新率了...CADisplayLink 简介:https://www.jianshu.com/p/434ec6911148 初始化CADisplayLink,监测FPS值的代码如下: _displayLink...= [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)]; [_displayLink...= nil) { self.FPSBlock(fps); } //1秒之后,初始化时间和次数,重新开始监测 _beginTime = link.timestamp;

3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS 定时任务

    前言 相对于Android来说 iOS定时任务用起来还是比较好用的 具体来说有三种 GCD方式 NSTimer CADisplayLink 一般都用前两种 做视图绘制 动画 视频等才用第三种 使用方式...) [timer invalidate]; CADisplayLink 创建方式 self.displayLink = [CADisplayLink displayLinkWithTarget:self...需要注意的是,该属性在target的selector被首次调用以后才会被赋值。selector的调用间隔时间计算方式是:调用间隔时间 = duration × frameInterval。...当把CADisplayLink对象add到runloop中后,selector就能被周期性调用,类似于重复的NSTimer被启动了; 执行invalidate操作时,CADisplayLink对象就会从...runloop中移除,selector调用也随即停止,类似于NSTimer的invalidate方法。

    2K20

    iOS动画系列之二:带时分秒指针的时钟动画(下)1. 创建CALayer2. 设置时分秒针3. 创建CADisplayLink4. 成稿

    这个图钉的位置就是锚点,就是我们在代码中设置的(0.5,1). 3. 创建CADisplayLink 我们一开始想到的办法就是用定时器,每一秒钟刷新一次秒针。但是使用了定时器之后,有一个问题。...发现秒针比电脑上的稍微慢一点。是因为刷新频率和电脑不一样。 解决方法就是使用CADisplayLink来刷新时钟。...// 创建CADisplayLink CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector...:NSDefaultRunLoopMode]; 3.1 CADisplayLink和NSTimer的区别 NSTimer占用系统资源较多 NSTimer使用完后,一定要销毁,把它设置成nil。...核心动画的时候,最好使用CADisplayLink 3.2 获取时间及时区 在clockRunning这个方法中,我们要设置时区,获取日历、当前时间。 在和时间打交道的时候,请千万别忘记了时区。

    1.1K10

    创建简单动画(一) --- 常规hud

    一个闭合的圆弧(白色部分) 看起来不是简单的位移动画了, 我们用UIBezierPath加CADisplayLink一帧一帧来画试试看 灰色的背景, 这个比较简单, 我们直接创建一个UIView子类,..., 一样用UIBezierPath, 先设置圆心 画一个圆弧然后闭合路径, _count是设置的一个变量, 有Controller中的计时器控制以达到动画的效果 //先画内圆 //设置线条...M_PI / 300 * _count clockwise:YES]; //线路闭合 [path closePath]; [path fill]; 要注意调整外圆和内闭合弧的线宽...ViewController () @property (nonatomic, strong) MyView *myView; @property (nonatomic, strong) CADisplayLink...displayLinkWithTarget:self selector:@selector(countOn)]; _displayLink.paused = YES; [_displayLink

    76120

    监测APP卡顿

    一、UI更新原理和卡顿原因 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建、布局计算、图片解码...所以,卡顿造成的原因分为CPU卡顿和GPU卡顿,CPU卡顿可以用CADisplayLink来检测,UI更新卡顿可以用Runloop的mode来检测 监测卡顿:开一个子线程,利用displaylink或者...四、DisplayLink检测卡顿 一但 CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就会调用CADisplayLink绑定的target...上的selector,这时target可以读到 CADisplayLink 的每次调用的时间戳,用来准备下一帧显示需要的数据。..._displayLink) { _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateTime

    1.9K10

    老司机带你走进Core Animation 之CADisplayLink

    CADisplayLink 老司机带你走进Core Animation 之几种动画的简单应用 老司机带你走进Core Animation 之CAShapeLayer和CATextLayer 老司机带你走进...模式初始化一个实例 self.timerInC = [CADisplayLink displayLinkWithTarget:self selector:@selector(changeImg...+(CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel; 通过这个方法,可以以target/selector模式生成一个绑定了触发事件的实例...好吧,CADisplayLink就这四个方法。以及四个属性: timestamp,获取上一次selector被执行的时间戳。...最后一个init开头的实例方法就是给timer添加了一个定时启动,这里就不赘述了。 NSTimer还有两个实例方法,fire和invalid。分别是立即执行事件和销毁timer。

    1.8K20

    iOS 惯性滑动效果

    寅时室内地图.gif 讲一下写这篇文章的原因:安卓是由于有系统的api,在滑动手势结束后调用系统自有api,传入手势结束时的速度(x方向和y方向)就能由系统自己做完往后的操作。...所以,在我做出这个效果之后,我得将它分享出来,给有需要的人提供思路,也希望能相互讨论,接受到更好的办法做出更好的效果。...一、第一种是在手势结束后通过UIView的动画来改蓝色图片的center,因为系统UIView的动画有快进慢出UIViewAnimationOptionCurveEaseOut这种效果可选。...displayLinkWithTarget:self selector:@selector(updateView)]; [dis addToRunLoop:[NSRunLoop currentRunLoop...要是有帮到大家是我的荣幸,另外夏天热,可以帮我买块西瓜去去暑 %>_<%。

    3.9K71

    定时器 你真的会使用吗?

    所以如果需要定时器在 UIScrollView 拖动时也不影响的话,有两种解决方法 timer分别添加到 UITrackingRunLoopMode 和 NSDefaultRunLoopMode中 [[...对象是一个和屏幕刷新率同步的定时器对象。...每当屏幕显示内容刷新结束的时候,runloop就会向CADisplayLink指定的target发送一次指定的selector消息, CADisplayLink类对应的 selector 就会被调用一次...displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; // 每隔1帧调用一次 self.displayLink.frameInterval...##GCD定时器 **GCD定时器**和NSTimer是不一样的,NSTimer受RunLoop影响,但是GCD的定时器不受影响,因为通过源码可知RunLoop也是基于GCD的实现的,所以GCD定时器有非常高的精度

    1.3K20
    领券