2010-02-08 1 views
0

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

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

ли Кварц рисовать все, что велят, или это умное достаточно рисовать только то, что действительно видно? Я чувствую, что первый подход лучше, потому что на самом деле сделано меньше рисунков. Неужели так?

Благодаря П.

ответ

1

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

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

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

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

+0

Я думал об этом решении, но мои изображения рисуются в пользовательском UITableViewCell и для достижения гладкой прокрутки. Я рисую все самостоятельно в drawRect вместо добавления subviews. Мне интересно, можно ли сделать subview в методе drawRect своего супервизора? Есть ли метод, например, drawAtPoint или drawInRect для NIVtring для UIViews? –

+0

Вы можете использовать -renderInContext: для слоя UIView, который будет рисовать содержимое большинства слоев непосредственно в контексте кварца. –

0

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

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

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

+0

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