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

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

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам