iOS 監(jiān)控屏幕刷新幀率

關于CADisplayLink

A CADisplayLink object is a timer object that allows your application to synchronize its drawing to the refresh rate of the display.這是官方文檔對于CADisplayLink的定義顽耳,意思就是說CADisplayLink是一個定時器(但并不繼承自NSTimer),它能夠讓你的應用以屏幕刷新的幀率來同步更新UI,所以我們可以通過它1s內調用指定target的指定方法的次數來獲得屏幕刷新的幀率趾代,從而來判斷CPU的運行狀態(tài)。

使用

   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [CPUFpsLabel setupOnView:[[application windows] firstObject].rootViewController.view];
    return YES;
}

CPUFpsLabel

@interface CPUFpsLabel : UILabel
+ (void)setupOnView:(UIView *)view;
- (void)start;
@end
@implementation CPUFpsLabel
{
    CADisplayLink *_link;
    NSUInteger _count;
    NSTimeInterval _lastTime;
}

+ (void)setupOnView:(UIView *)view
{
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    CPUFpsLabel *fpsLabel = [[CPUFpsLabel alloc] initWithFrame:CGRectMake(screenSize.width / 2.0 + 25, 0, 50, 20)];
    [fpsLabel start];
    [view addSubview:fpsLabel];
}

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        self.font=[UIFont boldSystemFontOfSize:12];
        self.textColor=[UIColor colorWithRed:0.33 green:0.84 blue:0.43 alpha:1.00];
        self.backgroundColor=[UIColor clearColor];
        self.textAlignment = NSTextAlignmentCenter;
        
        _link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
        [_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
        _link.paused = YES;
        
        
        [[NSNotificationCenter defaultCenter] addObserver: self
                                                 selector: @selector(applicationDidBecomeActiveNotification)
                                                     name: UIApplicationDidBecomeActiveNotification
                                                   object: nil];
        
        [[NSNotificationCenter defaultCenter] addObserver: self
                                                 selector: @selector(applicationWillResignActiveNotification)
                                                     name: UIApplicationWillResignActiveNotification
                                                   object: nil];
    }
    return self;
}

- (void)dealloc
{
    [_link invalidate];
    [_link removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}

- (void)applicationDidBecomeActiveNotification
{
    [_link setPaused:NO];
}

- (void)applicationWillResignActiveNotification
{
    [_link setPaused:YES];
}

- (void)start
{
    [_link setPaused:NO];
}

- (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;
    
    NSString *fpsString = [NSString stringWithFormat:@"%zd fps",(int)round(fps)];
    self.text = fpsString;
}

@end
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末橄镜,一起剝皮案震驚了整個濱河市绩脆,隨后出現的幾起案子,更是在濱河造成了極大的恐慌阎毅,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件点弯,死亡現場離奇詭異扇调,居然都是意外死亡,警方通過查閱死者的電腦和手機抢肛,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門狼钮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碳柱,“玉大人,你說我怎么就攤上這事熬芜×停” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵涎拉,是天一觀的道長瑞侮。 經常有香客問我,道長鼓拧,這世上最難降的妖魔是什么半火? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮季俩,結果婚禮上钮糖,老公的妹妹穿的比我還像新娘。我一直安慰自己酌住,他們只是感情好店归,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酪我,像睡著了一般消痛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祭示,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天肄满,我揣著相機與錄音,去河邊找鬼质涛。 笑死稠歉,一個胖子當著我的面吹牛,可吹牛的內容都是我干的汇陆。 我是一名探鬼主播怒炸,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毡代!你這毒婦竟也來了阅羹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤教寂,失蹤者是張志新(化名)和其女友劉穎捏鱼,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體酪耕,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡导梆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片看尼。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡递鹉,死狀恐怖,靈堂內的尸體忽然破棺而出藏斩,到底是詐尸還是另有隱情躏结,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布狰域,位于F島的核電站媳拴,受9級特大地震影響,放射性物質發(fā)生泄漏北专。R本人自食惡果不足惜禀挫,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一旬陡、第九天 我趴在偏房一處隱蔽的房頂上張望拓颓。 院中可真熱鬧,春花似錦描孟、人聲如沸驶睦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽场航。三九已至,卻和暖如春廉羔,著一層夾襖步出監(jiān)牢的瞬間溉痢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工憋他, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留孩饼,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓竹挡,卻偏偏與公主長得像镀娶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子揪罕,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容