FPS_CADisplayLink

什么是FPS莲组?

  • FPS = Frames Per Second 每秒渲染多少幀诊胞。

  • 更確切的解釋是“每秒鐘填充圖像的幀數(shù)(幀/秒)”。

  • FPS是測量用于保存锹杈、顯示動態(tài)視頻的信息數(shù)量厢钧。

  • 通俗來講就是指動畫或視頻的畫面數(shù)鳞尔。例如在電影視頻及數(shù)字視頻上,* * 每一幀都是靜止的圖象早直;快速連續(xù)地顯示幀便形成了運動的假象寥假。

  • 每秒鐘幀數(shù) (FPS) 愈多,所顯示的動作就會愈流暢霞扬。通常糕韧,要避免動作不流暢的最低FPS是30。

  • 某些計算機視頻格式喻圃,例如 AVI萤彩,每秒只能提供15幀。這里的“FPS”也可以理解為我們常說的“刷新率(單位為Hz)”斧拍,例如我們常在CS游戲里說的“FPS值”雀扶。

  • 我們在裝機選購顯卡和顯示器的時候,都會注意到“刷新率”肆汹。一般我們設(shè)置缺省刷新率都在75Hz(即75幀/秒)以上愚墓。例如:75Hz的刷新率刷也就是指屏幕一秒內(nèi)只掃描75次,即75幀/秒昂勉。而當(dāng)刷新率太低時我們?nèi)庋鄱寄芨杏X到屏幕的閃爍浪册,不連貫,對圖像顯示效果和視覺感觀產(chǎn)生不好的影響岗照。

什么是CADisplayLink?

  • CADisplayLink 是一個能讓我們以和屏幕刷新率相同的頻率將內(nèi)容畫到屏幕上的定時器村象。

  • 我們在應(yīng)用中創(chuàng)建一個新的CADisplayLink對象,把它添加到一個'runloop'中攒至,并給它提供一個target和selector在屏幕刷新的時候調(diào)用厚者。一但CADisplayLink以特定的模式注冊到runloop之后,每當(dāng)屏幕需要刷新的時候迫吐,runloop就會調(diào)用CADisplayLink綁定的target上的selector籍救,這時target可以讀到CADisplayLink的每次調(diào)用的時間戳,用來準(zhǔn)備下一幀顯示需要的數(shù)據(jù)渠抹。

  • 例如一個視頻應(yīng)用使用時間戳來計算下一幀要顯示的視頻數(shù)據(jù)蝙昙。在UI做動畫的過程中,需要通過時間戳來計算UI對象在動畫的下一幀要更新的大小等等梧却。

  • 在添加進runloop的時候我們應(yīng)該選用高一些的優(yōu)先級奇颠,來保證動畫的平滑》藕剑可以設(shè)想一下烈拒,我們在動畫的過程中,runloop被添加進來了一個高優(yōu)先級的任務(wù),那么,下一次的調(diào)用就會被暫停轉(zhuǎn)而先去執(zhí)行高優(yōu)先級的任務(wù),然后在接著執(zhí)行CADisplayLink的調(diào)用荆几,從而造成動畫過程的卡頓吓妆,使動畫不流暢。

  • duration屬性提供了每幀之間的時間吨铸,也就是屏幕每次刷新之間的的時間行拢。我們可以使用這個時間來計算出下一幀要顯示的UI的數(shù)值。但是duration只是個大概的時間诞吱,如果CPU忙于其它計算舟奠,就沒法保證以相同的頻率執(zhí)行屏幕的繪制操作,這樣會跳過幾次調(diào)用回調(diào)方法的機會房维。

  • frameInterval屬性是可讀可寫的NSInteger型值沼瘫,標(biāo)識間隔多少幀調(diào)用一次selector方法,默認(rèn)值是1咙俩,即每幀都調(diào)用一次耿戚。

  • 如果每幀都調(diào)用一次的話,對于iOS設(shè)備來說那刷新頻率就是60HZ也就是每秒60次阿趁,如果將frameInterval設(shè)為2 那么就會兩幀調(diào)用一次膜蛔,也就是變成了每秒刷新30次。

  • 我們通過pause屬性開控制CADisplayLink的運行歌焦。當(dāng)我們想結(jié)束一個CADisplayLink的時候,應(yīng)該調(diào)用-(void)invalidate從runloop中刪除并刪除之前綁定的target跟selector另外CADisplayLink不能被繼承砚哆。

FPS檢測工具

FPS.gif
FPS_OC是OC版本的FPS檢測工具独撇,只需要一行代碼如下:
      //如果可以給我一個星星就非常感謝了。有問題我會及時回復(fù)
      //開啟檢測      
     [[FPS_OC sharedFps]start];

去github下載演示代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末躁锁,一起剝皮案震驚了整個濱河市纷铣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌战转,老刑警劉巖搜立,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異槐秧,居然都是意外死亡啄踊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門刁标,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颠通,“玉大人,你說我怎么就攤上這事膀懈《倜蹋” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硼控。 經(jīng)常有香客問我刘陶,道長,這世上最難降的妖魔是什么牢撼? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任匙隔,我火速辦了婚禮,結(jié)果婚禮上浪默,老公的妹妹穿的比我還像新娘牡直。我一直安慰自己,他們只是感情好纳决,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布碰逸。 她就那樣靜靜地躺著,像睡著了一般阔加。 火紅的嫁衣襯著肌膚如雪饵史。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天胜榔,我揣著相機與錄音胳喷,去河邊找鬼。 笑死夭织,一個胖子當(dāng)著我的面吹牛吭露,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尊惰,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讲竿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弄屡?” 一聲冷哼從身側(cè)響起题禀,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膀捷,沒想到半個月后迈嘹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡全庸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年秀仲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壶笼。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡啄育,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拌消,到底是詐尸還是另有隱情挑豌,我是刑警寧澤安券,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站氓英,受9級特大地震影響侯勉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铝阐,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一址貌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徘键,春花似錦练对、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至它呀,卻和暖如春螺男,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纵穿。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工下隧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谓媒。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓淆院,卻偏偏與公主長得像,于是被迫代替她去往敵國和親句惯。 傳聞我的和親對象是個殘疾皇子土辩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容