Производительность CALayer по сравнению с работой UIImageView

Я замечаю, что некоторые вещи, которые я делаю с изображениями в моем приложении, я мог делать со свойствами CALayer вместо этого (т.е. границы, тени, градиенты, и так далее). Таким образом, я задаюсь вопросом, в целом, действительно ли это - лучшая идея использовать CALayers и такой, или просто сделать все это в фотошопе и использовать UIImage (Представление) s для того, в чем я нуждаюсь? Прокрутка производительности была довольно медленной с падающими тенями и материалом, таким образом, я в основном пытаюсь найти каждую небольшую оптимизацию, что я могу.

Справочная информация: я в основном просто просматриваю набор путем прокрутки изображений, вертикально. Несколько как фото приложение. Это - все от 3,2 вперед, таким образом, у меня есть доступ к вещам как тень и shouldRasterize свойства в CALayer.

6
задан David Liu 2 July 2010 в 22:02
поделиться

1 ответ

Ключевым моментом, который нужно знать о тенях CALayer, является то, что они по умолчанию визуализируются из составного альфа-канала слоя; это может быть очень медленным, особенно когда слой вращается или меняет размер. Вам следует изучить свойство shadowPath : если вы зададите Core Animation простую форму, например прямоугольник ( UIBezierPath + bezierPathWithRect: с границами слоя ] предоставит вам [через свойство CGPath ] CGPathRef , которое вы можете использовать там), вы увидите гораздо лучшую производительность.

shouldRasterize также определенно полезен, особенно с представлениями, которые имеют много подпредставлений, которые не часто меняются; Убедитесь, однако, что вы установили rasterizationScale слоя на [UIScreen mainScreen] .scale , иначе вы получите некоторую неприятную пикселизацию на экранах с высоким разрешением, таких как iPhone 4.

15
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: