2017-09-10 2 views
0

스크롤 영역의 속도를 계산하는 객체가 있습니다. 사용자가 화면에서 손가락을 위로 움직이면이 객체는 매 10ms마다 이벤트를 발생시켜 스크롤 속도를 계산하고 화면을 새로 고침합니다 (GLKView 객체의 setNeedsDisplayInRect 호출).디스플레이 재생 빈도에 연결하여 타이머를 실행하는 방법은 무엇입니까?

내 이벤트를 실제 디스플레이 재생 빈도 (즉, 일반적으로 60fps)와 동기화하는 것이 걱정됩니다. ios에서는 각 디스플레이 새로 고침 (약 16ms마다)에서 이벤트를 발생시키는 방법이 있습니까? 아마 이것에 대해 cadisplayLink을 사용해야합니까?

답변

1

예, 가장 좋은 방법은 CADisplayLink입니다. 화면 새로 고침과 동기화되도록 설계되었습니다.

+0

감사합니다.하지만 cadisplaylink와 함께 이상한 버그가 있습니다. (https://stackoverflow.com/questions/46146006/why-calling-setneedsdisplay-from-a-nstimer-make-cadisplaylink-stop-to-work-corre를 참조하십시오. .. 어쩌면 나는 runloopMode가 어떻게 작동하는지 이해하지 못한다 :( –

관련 문제