기본적으로 전체 화면을 다루는 사용자 지정 그림이있는 UIView
인 iPad 응용 프로그램에서 작업하고 있습니다. 그것은 오디오 응용 프로그램이며 VU 미터를 사용하여 초당 약 30 번 이더넷을 통해 업데이트 메시지를받습니다. 그러면 UI에 화면에 VU 미터를 다시 그리도록 지시합니다.UIView에 대한 자주/빈번한 호출 처리를 효율적으로 처리해야합니다.
내가 가진 문제는보기의 다양한 위치에 16 개의 VU 미터가 있으며 결국 초당 30 번 각각 needsDisplayInRect
을 호출한다는 것입니다. drawRect
함수에서 그림을 모두 수행하면 작동하지만, CGRect
이 전달 된 drawRect
이 거의 전체 화면이므로 꽤 느립니다.
OSX 버전에는 그리기 성능을 크게 향상시킬 수있는 경로를 제공하는 기능이있는 NSView
getRectsBeingDrawn
기능이 있습니다. 그러나 iOS에는 동일한 기능이 없다는 것을 알고 있습니다.
난 후라고 한 CGRects
만 drawRect
에서 그들을 다시 그리는 저장 시도했다, 그러나 아이폰 OS가 종종 needsDisplayInRect
그들을 호출 가지고있는 CGRects
사이의 영역을 다시 그리기로 결정 밝혀, 그래서 나는 끝낼 다시 그리기를 요청하지 않은 영역의 큰 흰색 직사각형 (내가 기대하는 성능 향상을 얻지 만). 여기서 문제는 실제로 다시 그려지는 rect를 얻는 방법을 볼 수 없다는 것입니다. rect는 본질적으로 다시 그려지는 모든 rect의 합집합 인 drawRect로 전달됩니다.
그래서 내가 놓친 UIView
의 작은 영역을 매우 자주 다시 그리는 속도를 높이는 다른 방법이 있습니까?