UIWebView: отслеживание обновлений экрана (грязные области)

Я пытаюсь обнаружить анимации и другие обновления экрана, как они происходят внутри UIWebView. Я хотел бы получить прямоугольники областей в UIWebView, которые были изменены с момента последнего обновления.

Я думаю, что на самом деле я ищу способ "перехватить" вызовы, которые UIWebView делает для setNeedsDisplayInRect. Есть способ сделать это? Могу ли я каким-то образом создать подкласс базового объекта CALayer в UIWebView таким образом, чтобы я мог перехватывать эти вызовы по мере их поступления из UIWebView?

2 ответа

Используйте категорию Objective C (@implementation CALayer (MyCALayer)) - как вы уже делаете на основе своего обновления - чтобы перехватывать вызовы, идущие от UIWebView к CALayer.

Затем используйте метод Swizzling, чтобы переопределить переопределения вашей категории на исходный объект CALayer.

Нет хорошего способа сделать это. Вы можете попытаться получить снимок CALayer UIWebView и сравнить его с предыдущим снимком, но у меня было много проблем с получением надежных снимков UIWebView.

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