Правильное использование setNeedsDisplayInRect: метод для анимации

У меня есть некоторый контроллер представления, который использует мой собственный класс представления и интерфейс XIB, поэтому представление инициализируется из кодера. В этом контроллере представления, когда я перемещаю ползунок, он перерисовывает прямоугольник, в начальном состоянии прямоугольник находится в полноэкранном режиме, а когда я перемещаю ползунок влево, размер прямоугольника пропорционально уменьшается (от полного экрана до 10x14 непрерывно с 4 пикселя интервалы). «Ползунок изменил значение» вызывает некоторый метод, который устанавливает новый размер прямоугольника и отправляет метод «setNeedsDisplay». И если я перехожу на метод "setNeedsDisplayInRect:", он не обновляет все, что мне нужно на экране, есть некоторые артефакты. Но с отладкой обновляет все как я хочу. Пытался отправить различные прямоугольники для обновления, например:

redrawRect=CGRectUnion(oldRect, newRect);
[cView setNeedsDisplayInRect:redrawRect];

и некоторые другие, та же история. Мой вопрос: какой прямоугольник мне нужно отправить в «setNeedsDisplayInRect:»?

И второй вопрос, как я могу ускорить/оптимизировать всю эту историю для более плавной анимации и меньших затрат?


person Nikita    schedule 28.11.2011    source источник


Ответы (1)


Уже решил проблему 1. В методе "setNeedsDisplayInRect:" используются точки, а не пиксели как я думал.

person Nikita    schedule 28.11.2011