在状态栏显示FPS状态,FPS是一秒钟渲染多少帧 Frame Per Second = FPS,FPS值为55~60最佳,低于这个范围就较为卡顿了。

使用方法

#if defined(DEBUG) || defined(_DEBUG)

// 添加FPSStatus

[[MGFPSStatus shareInstance] show];

#endif

状态栏MGFPSStatus

FPSStatus.m

@implementation MGFPSStatus {

// 顶部FPSLabel

UILabel *_fpsLabel;

CADisplayLink *_displayLink;

NSTimeInterval _lastTime;

NSUInteger _count;

UIColor *_fpsColor;

}

+ (instancetype)shareInstance

{

static MGFPSStatus *_instance;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

_instance = [[MGFPSStatus alloc] init];

});

return _instance;

}

- (instancetype)init

{

self = [super init];

if (self) {

// 创建label

_fpsLabel = [[UILabel alloc] initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width)/2+30, 0, 50, 20)];

// _fpsLabel.text = @"23344";

_fpsLabel.font = [UIFont systemFontOfSize:12];

_fpsLabel.layer.cornerRadius = 5;

_fpsLabel.clipsToBounds = YES;

_fpsLabel.textAlignment = NSTextAlignmentCenter;

_fpsLabel.userInteractionEnabled = NO;

_fpsLabel.backgroundColor = [UIColor colorWithWhite:1.000 alpha:0.700];

// 创建定时器

_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];

[_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

}

return self;

}

- (void)tick:(CADisplayLink *)link {

// 第一次

if (_lastTime == 0) {

_lastTime = link.timestamp;

return;

}

_count++;

NSTimeInterval delta = link.timestamp - _lastTime;

if (delta < 1) return;

_lastTime = link.timestamp;

float fps = _count / delta;

_count = 0;

NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d FPS",(int)round(fps)]];

// 根据卡顿程度显示颜色

if (fps >= 55.0) {

_fpsColor = [UIColor greenColor];

} else if (fps>=50 && fps<55) {

_fpsColor = [UIColor yellowColor];

} else {

_fpsColor = [UIColor redColor];

}

[text addAttribute:NSForegroundColorAttributeName value:_fpsColor range:NSMakeRange(0, text.length - 3)];

[text addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(text.length - 3, 3)];

_fpsLabel.attributedText = text;

}

- (void)dealloc

{

[_displayLink invalidate];

NSLog(@"release");

}

- (void)show {

[[UIApplication sharedApplication].keyWindow addSubview:_fpsLabel];

}

@end

参考资料

ios查看帧率的软件_查看iOS屏幕帧数MGFPSStatus相关推荐

  1. ios查看帧率的软件_程序员必看!直播软件开发弱网下保障高清流畅推流的方法...

    通常情况下程序员在开发直播软件时,优化卡顿和延迟是比较多的,只要是优化欠佳,就会导致前端APP运行出问题,为了帮助程序员在开发过程中能更加合理有效的优化,小编在这里从开发的层面简要介绍一下影响直播体验 ...

  2. 查看Python的版本_查看当前安装Python的版本

    一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...

  3. 什么软件可以测试吃鸡帧数,好奇实验室:内存频率影响吃鸡帧数有多大?

    现在内存条的价格飙升到让人很难接受的地步了,低频高频条的价格差距非常大,在实际游戏体验中究竟有何差距呢?到底花高价买高频内存条划不划算?今天我们就分别使用两种内存频率来针对<绝地求生:大逃杀&g ...

  4. ios查看帧率的软件_iOS实时流畅性监控

    移动APP开发,性能一直是我们关心的重要话题,Xcode提供了一些方便的工具检测性能问题,但是这些工具使用并不方便,一般只有在发现性能问题的时候我们才会使用这些工具.快速的发现性能问题,有助于我们主动 ...

  5. ios签名软件_使用ios企业签名需要准备哪些?

    ios企业签名是给需要在ios系统使用的APP所使用的,不能通过上架的app可以通过签名的方式让用户在ios系统中使用该app,那么对于ios企业证书,我们需要提供什么东西来进行签名呢?下面一起来看看 ...

  6. vista怎么看计算机配置,查看电脑配置软件_无需软件 三方法查看电脑配置

    摘要 腾兴网为您分享:无需软件 三方法查看电脑配置,自动刷宝,悬浮球,鑫钱袋,问作业等软件知识,以及嗨皮直播,公积金app,语音朗读小说阅读器,left4dead2,河北云教育服务,pandahelp ...

  7. 什么软件可以测试吃鸡帧数,RTX 3080 有多大升级必要?绝地求生帧数实测

    对于剪辑师和游戏者来说,显卡是其生产力的工具.对于一些游戏UP主来说更是如此,他们不仅平时需要进行游戏录制视频素材,更是需要显卡的强大渲染能力来完成视频剪辑.那么使用RTX 3080显卡对于渲染和游戏 ...

  8. 最大扇入数怎么判断_全面提高游戏帧数的方法!

    本次为大家带来的是全面优化提高游戏帧数的步骤详解.通常情况下,硬件平台所发挥的性能极限不足以满足体验者对当前游戏的帧数期望时,玩家们一般是通过降低画质的方式令帧数得到缓解提高,这一操作也是最正常不过的 ...

  9. 安卓投屏软件_安卓iOS屏幕一键投射,安利几款超好用的投屏软件

      在投屏软件的使用方面,小编可以说是颇有心得,投屏软件不只用于看电影和追剧,还可以用于商务.教育和直播等多种场景,尤其是游戏主播可以直接把手机投屏到大屏幕上,这样直播展示就方便多了.就直播来说,对画 ...

  10. ios开发 架子鼓功能开发_适用于iOS开发人员的功能标志

    ios开发 架子鼓功能开发 When building modern applications, things tend to move quite quickly. When you add mul ...

最新文章

  1. zoj3557 插板法卢卡斯求组合数取模
  2. boost::container实现双端队列选项的测试程序
  3. 怎么用计算机弹出soldout,SOLDOUT2游戏新手攻略玩法全面介绍
  4. Python 数据分析三剑客之 NumPy(一):理解 NumPy / 数组基础
  5. dbeaver导出excel文件_vue将数据导出为excel文件就是如此简单
  6. 服务器驱动文件丢失恢复教程,服务器驱动丢失。
  7. 微型计算机有哪些型号,微型计算机一般按什么进行分类
  8. 【网络安全专栏目录】--企鹅专栏导航
  9. 阿里云mysql自动备份_如何使用脚本自动备份阿里云rds数据库
  10. 大作都是怎么诞生的,游戏开发全过程揭秘 !零基础小白入门须知
  11. 安卓学习专栏——百度地图(6)移动到我的位置(图文+代码)
  12. 用函数调用编写程序,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+...+1/(1+2+3+...+n).)
  13. acme.sh申请Let‘s encrypt泛域名证书Docker化部署
  14. linux中etc下的hosts(本地IP解析)文件详解
  15. android 麦克风录音输出
  16. springmvc笔记回顾——持续更新
  17. uniapp web端 支付宝 微信使用当面付
  18. 【数据可视化】贾跃亭和恒大对战:他的商业帝国梦是最后的狂欢还是东山再起?...
  19. CPU卡加密系统与M1加密系统比较!
  20. Hybrd A*(混合A*)算法

热门文章

  1. 【Sql】—Sql开发利器Sql Prompt
  2. matlab广义误差分布,基于Copula函数的多源径流预报误差联合分布研究
  3. 易班自动答题脚本_自动答题脚本教程及源码分享(无视分辨率)
  4. SolidWorks 2018 安装教程
  5. arcmap发布三维地图_三维地图制作-百纳九洲
  6. jdk帮助文档 JDK1.8 JDK14
  7. 启用windows功能NetFx3时出错的离线解决方案
  8. highlighting v5.0插件使用 一(持续更新)
  9. 极点五笔常用操作及快捷键功能描述(v6.5)
  10. android+号码归属地数据库,Android手机号码归属地的查询