iOS: быстрее вызывать setNeedsDisplayInRect дважды, когда есть две маленькие несмежные области представления, которые нужно перерисовать? - PullRequest
2 голосов
/ 23 июля 2011

Предположим, что две очень маленькие области моего зрения должны быть перерисованы.Один в левом верхнем углу, другой в правом нижнем углу.Я мог бы использовать их координаты, чтобы передать один большой CGRect, который содержит обе области для setNeedsDisplayInRect, но это в конечном итоге включает в себя множество других областей, которые не должны быть перерисованы.другой вариант - просто передать их отдельные содержащие CGRects в setNeedsDisplayInRect, один за другим, т.е.

[self.view setNeedsDisplayInRect:rectForArea1]
[self.view setNeedsDisplayInRect:rectForArea2]

Что обычно будет быстрее?Минимизировать количество раз, которое вызывается drawRect: в конечном счете, или минимизировать количество области экрана, которую он должен перерисовать, даже если он должен перерисовать дважды?

Ответы [ 2 ]

3 голосов
/ 28 октября 2012

Неважно. Как описано здесь , iOS всегда будет обновлять весь вид независимо от того, какой прямоугольник вы передаете в setNeedsDisplayInRect:

Обратите внимание, что из-за того, как iPhone / iPod touch / iPad обновляет свои экран, весь вид будет перерисован, если вы позвоните -setNeedsDisplayInRect: или -setNeedsDisplay:.

0 голосов
/ 23 июля 2011

это зависит от этих двух прямоугольников.

если оба сложения границ составляют 75% границ просмотра, тогда я буду называть просто вызов

    [self.view setNeedsDisplay];

потому что мы рисуем почти весь вид.

если сложение обеих границ ниже 50% границ просмотра, тогда я позвоню просто позвонить

    [self.view setNeedsDisplayInRect:rectForArea1];

    [self.view setNeedsDisplayInRect:rectForArea2];

потому что нам нужно нарисовать небольшие пробелы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...