Рисование с помощью CALayer
часто приводит к низкой производительности. Мы обычно используем растягиваемое изображение, чтобы получить адекватную производительность. Когда вы думаете об этом, имеет смысл рендерить его заранее, а не использовать ограниченную вычислительную мощность iPhone для рендеринга в реальном времени.
Возможно, вы сможете получить адекватную производительность от CALayer
, но рисование png, вероятно, все равно будет быстрее, что позволит сэкономить время работы от батареи.
РЕДАКТИРОВАТЬ: Итак, вот пример, чтобы объяснить концепцию.
Этот код фактически заменил слишком медленный рисунок CALayer.
UIImageView *shadow = [[UIImageView alloc] initWithFrame:frame];
shadow.image = [[UIImage imageNamed:@"shadow.png"] stretchableImageWithLeftCapWidth:16.0 topCapHeight:16.0];
[contentView addSubview:shadow];
[shadow release];
shadow.png
имеет размер 34 на 34 пикселя и содержит затененный квадрат. Благодаря растягивающемуся изображению можно изменить размер квадрата, не растягивая тень. Для получения дополнительной информации об этом я бы предложил прочитать документацию для stretchableImageWithLeftCapWidth:topCapHeight:
. Также Google поможет вам найти руководства по работе с растягиваемыми изображениями. Если у вас есть еще вопросы, я с удовольствием на них отвечу.