Я работаю над приложением iPad, которое имеет пользовательский рисунок UIView
, который в основном охватывает весь экран. Это звуковое приложение, и у него есть счетчики VU, которые получают сообщения об обновлении через Ethernet около 30 раз в секунду, а затем сообщают пользовательскому интерфейсу перерисовывать счетчики VU на экране.Обработка множественных/частых вызовов UIView needsDisplayInRect эффективно
Проблема заключается в том, что есть 16 VU метров в разных положениях в представлении, и я в конечном итоге вызываю needsDisplayInRect
для каждого из них 30 раз в секунду. Если я делаю весь рисунок в функции drawRect
, тогда он работает, но он довольно вялый, так как CGRect
прошел до drawRect
- это почти весь экран.
В версии OSX есть функция NSView
getRectsBeingDrawn
, которая дала мне маршрут для значительного улучшения производительности перерисовки. Однако, насколько мне известно, в iOS нет эквивалентной функции.
Я пытался хранить CGRects
, что я назвал тогда только перерисовывать их в drawRect
, но оказывается, что IOS часто решает перерисовать области между CGRects
, оказавшим needsDisplayInRect
призвал их, так что я в конечном итоге большие белые прямоугольники в областях, на которые я не запрашивал перерисовку (хотя я действительно добиваюсь улучшения производительности, которого я ожидаю). Проблема здесь в том, что я не вижу способа получить исправления, которые на самом деле перерисовываются, а только прямой передается в drawRect, который по сути является объединением всех исправлений, которые перерисовываются.
Итак, есть ли другой способ ускорить очень частое перерисовывание небольших областей UIView
, которые я пропустил?