CADisplayLink翻譯

CADisplayLink對象是一個時間相關的對象,它允許你的應用將它的渲染同步到顯示的刷新速率上?(不太通順)

Overview

1.你的應用程序初始化一個新的display link,提供一個target對象和一個selector,selector將在屏幕更新時調用。爲了同步你的顯示循環,你的應用將它添加到一個run loop中(通過 add(to:forMode:) 方法)。

2.一旦這個display link 與一個run loop關聯,這個target上的selector將在屏幕的內容需要更新時被調用。target可以通過讀取display link’s timestamp屬性來恢復上一幀顯示的時間。例如,一個應用播放movies可能使用這個timestamp來計算下一次播放哪個video frame。一個應用程序如果自己處理動畫,它可能使用這個timestamp來決定在哪以及怎樣顯示還未到來的frame。duration屬性提供了在frames之間的時間間隔。你可以使用這個value值來計算顯示的frame的速率,下一幀大概顯示的時間,和調整渲染的行爲,以使下一幀及時顯示。

3.你的應用可以通過將isPaused屬性設置爲true來禁止通知。並且,如果你的應用不能在規定的時間提供frames,你可能想選擇一個慢一點的幀率。一個有較慢但恆定的幀率的應用比一個跳幀的應用顯得更加平滑。你可以通過設置preferredFramesPerSecond 屬性來設置幀率。

4.當你的應用使用完了一個display link,你應該調用invalidate() 來將它從run loops 中刪除和將它與target解除關係。

Listing 1 shows how you can create a display link and add it to the current run loop. The display link invokes the step function, which simply prints the current timestamp, with each screen update.

Listing 1
Creating a display link

func createDisplayLink() {
    let displaylink = CADisplayLink(target: self,
                                    selector: #selector(step))

    displaylink.add(to: .current,
                    forMode: .defaultRunLoopMode)
}

func step(displaylink: CADisplayLink) {
    print(displaylink.timestamp)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章