Правильное использование setNeedsDisplayInRect: метод для анимации - PullRequest
0 голосов
/ 28 ноября 2011

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

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

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

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

1 Ответ

0 голосов
/ 28 ноября 2011

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

...