80-Swift之CADisplayLink的解說

引言

在App的開發(fā)中定時器是常用的組件白修。我們在55 - Swift 之 Timer (NSTimer )定時器已經(jīng)介紹了Timer妒峦。本篇我們將介紹CADisplayLink

1兵睛、CADisplayLink 是什么肯骇?

CADisplayLink 是一種觸發(fā)時間和屏幕刷新頻率相同的定時器。

2祖很、CADisplaylink 的基本使用方法笛丙。

我們在項目中創(chuàng)建一個 CADisplayLink 的對象 A ,同時給他一個 target 和一個 Selector ; 然后假颇,將 A 添加到 RunLoop 中若债,在屏幕刷新的時候就會觸發(fā) ASelector 方法。

3拆融、 CADisplayLink 的幾個參數(shù)介紹

1蠢琳、 timestamp

timestamp 是指當(dāng)前幀開始刷新的時間。

2镜豹、duration

duration 是一幀刷新所用時的時間傲须。

3、 targetTimestamp

targetTimestamp 是下一幀開始刷新的時間趟脂。

注意:(默認情況下)
targetTimestampdurationtimestamp默認情況下 之間的關(guān)系如下:
timestamptargetTimestamp 相差 duration 泰讽;即是 :
duration = targetTimestamp - timestamp 的關(guān)系。

4昔期、isPaused

isPaused 是阻止屏幕刷新的進行的參數(shù)已卸。isPaused 如果為 true 屏幕刷新停止。isPausedflase 屏幕開始刷新硼一。

5累澡、invalidate() 函數(shù)

invalidate() 這個函數(shù)我們并不陌生,我們在 OC 的 NSTime 和 Swift 的 Timer 中都見過它般贼。invalidate() 該函數(shù)的作用是停止定時愧哟,同時釋放定時器對象奥吩。

6、open func add(to runloop: RunLoop, forMode mode: RunLoopMode) 函數(shù)

open func add(to runloop: RunLoop, forMode mode: RunLoopMode) 該函數(shù)的作用是將創(chuàng)建的 CADisplayLink 對象加入到 RunLoop 中蕊梧,才能在屏幕刷新的時候霞赫,執(zhí)行定時器的 selector 方法。

7肥矢、 open func remove(from runloop: RunLoop, forMode mode: RunLoopMode) 函數(shù)

open func remove(from runloop: RunLoop, forMode mode: RunLoopMode) 該函數(shù)的作用是將添加的 CADisplayLink 對象從 RunLoop 中移除端衰,停止定時作用,減輕Cup的負擔(dān)甘改。

8 旅东、 preferredFramesPerSecond

preferredFramesPerSecond 該參數(shù)的作用是設(shè)置屏幕在一分鐘內(nèi)刷新的幀數(shù)。默認為60楼誓,當(dāng)設(shè)置為0 的時候?qū)⒑推聊凰⑿骂l率相同玉锌,該參數(shù)在 ios 10.0 以上可是使用。

4疟羹、 CADisplaylink 的使用

// MARK: 創(chuàng)建一個CADisplayLink的對象
func budlingDisplayLink() -> Void {
    // 創(chuàng)建對象
    let displayLink = CADisplayLink.init(target: self, selector: #selector(displayLinkClick(_:)))
    // 設(shè)置觸發(fā)頻率
    if #available(iOS 3.1, *) {
        //設(shè)置一秒內(nèi)有幾幀刷新主守,默認60,即是一秒內(nèi)有60幀執(zhí)行刷新調(diào)用榄融。
        displayLink.preferredFramesPerSecond = 3
    }else {
        displayLink.frameInterval = 2
    }
    // 加入循環(huán)
    displayLink.add(to: RunLoop.main, forMode: .defaultRunLoopMode)
}
@objc func displayLinkClick(_ displayLink:CADisplayLink) -> Void {
    // 當(dāng)前幀開始刷新的時間
    print(displayLink.timestamp)
    // 一幀刷新使用的時間
    print(displayLink.duration)
    // 下一幀開始刷新的時間
    print(displayLink.targetTimestamp)
    // TODO: displayLink.timestamp 與 displayLink.targetTimestamp 相差 displayLink.duration 参淫;即是 : displayLink.duration  = displayLink.targetTimestamp - displayLink.timestamp 的關(guān)系。
    // 暫停幀的刷新 true:停 ; false:開始
    displayLink.isPaused = true
    // 將定時器移除主循環(huán)
    displayLink.remove(from: RunLoop.main, forMode: .defaultRunLoopMode)
    // 停止定時器
    displayLink.invalidate()
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末愧杯,一起剝皮案震驚了整個濱河市涎才,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌力九,老刑警劉巖耍铜,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異跌前,居然都是意外死亡棕兼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門抵乓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伴挚,“玉大人,你說我怎么就攤上這事灾炭【ビ螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵蜈出,是天一觀的道長田弥。 經(jīng)常有香客問我,道長掏缎,這世上最難降的妖魔是什么皱蹦? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任煤杀,我火速辦了婚禮眷蜈,結(jié)果婚禮上沪哺,老公的妹妹穿的比我還像新娘。我一直安慰自己酌儒,他們只是感情好辜妓,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忌怎,像睡著了一般籍滴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上榴啸,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天孽惰,我揣著相機與錄音,去河邊找鬼鸥印。 笑死勋功,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的库说。 我是一名探鬼主播狂鞋,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼潜的!你這毒婦竟也來了骚揍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啰挪,失蹤者是張志新(化名)和其女友劉穎信不,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亡呵,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡抽活,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了政己。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酌壕。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖歇由,靈堂內(nèi)的尸體忽然破棺而出卵牍,到底是詐尸還是另有隱情,我是刑警寧澤沦泌,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布糊昙,位于F島的核電站,受9級特大地震影響谢谦,放射性物質(zhì)發(fā)生泄漏释牺。R本人自食惡果不足惜萝衩,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望没咙。 院中可真熱鬧猩谊,春花似錦、人聲如沸祭刚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡驮。三九已至暗甥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捉捅,已是汗流浹背撤防。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棒口,地道東北人寄月。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像陌凳,于是被迫代替她去往敵國和親剥懒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

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