Кварц для iPhone рисует невидимые части вида? - PullRequest
0 голосов
/ 08 февраля 2010

Мне интересно, как лучше всего с точки зрения скорости и эффективности нарисовать рамку вокруг изображения на iPhone, особенно когда мне нужно нарисовать много таких изображений:

1) Рисование изображения, а затем рамки вокруг или же 2) Рисуем прямоугольник, заполняя его цветом, а затем рисуем изображение внутри этого прямоугольника, оставляя некоторый смещенный пиксель, чтобы имитировать рамку

Рисует ли Кварц все, что ему говорят, или он достаточно умен, чтобы рисовать только то, что действительно видно? Мне кажется, что первый подход лучше, потому что на самом деле меньше рисования. Это действительно так?

Спасибо П.

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Кварцевый рисунок будет иметь место только в границах вида, если вы выполняете пользовательский рисунок в -drawRect:.

Тем не менее, я думаю, что вы увидите лучшую производительность, если просто создадите UIImageViews для каждого изображения, а затем используете свойства borderWidth, borderColor и, возможно, cornerRadius на слое вашего представления, чтобы установить границу. Например:

imageView.layer.cornerRadius = 10.0f;
imageView.layer.borderWidth = 3.0f;
imageView.layer.borderColor = [[UIColor blackColor] CGColor];

поместит черную рамку шириной 3 пикселя вокруг вашего вида и придаст ей 10 пиксельных радиусов по углам.

0 голосов
/ 08 февраля 2010

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

В вашем конкретном случае, я думаю, вам нужно протестировать оба варианта на iPhone (если это возможно) и сравнить их. Может быть, проще просто заполнить весь прямоугольник, а не вычислять, какие пиксели являются частью кадра, а какие нет?

Это зависит от графического чипа.

...