На устройствах iOS, в каких случаях лучше рисовать графику с использованием Core Graphics, чем с помощью файлов изображений?
В чем преимущества этого в плане ресурсов?
На устройствах iOS, в каких случаях лучше рисовать графику с использованием Core Graphics, чем с помощью файлов изображений?
В чем преимущества этого в плане ресурсов?
Изображения против Core Graphics - это тупое различие. Методы визуализации закадровой/экранной графики более сложны до такой степени, что вам нужно использовать инструменты, чтобы узнать, что на самом деле происходит. Я попытался дать обзор здесь, но этот ответ мог бы использовать некоторые улучшения от более знающих людей.
Графика всегда отображается на экране графическим процессором. Тем не менее, они могут быть сгенерированы GPU или CPU, и происходить в коде пользователя или в отдельном процессе, называемом "сервер рендеринга". Вот обзор:
CPU, код пользователя:
drawRect()
. Результат обычно кешируется.GPU, сервер рендеринга:
shouldRasterize
YES. Это создает кэш слоя и подслоев.GPU, сервер рендеринга, очень медленный:
setMasksToBounds
) и динамических теней (setShadow*
).UIViewGroupOpacity
).GPU, быстрый:
Обратите внимание, что кэширование полезно, только если кэш используется повторно. Если его сразу выбросить, это ухудшит производительность. Например, кэшированная анимация, в которой содержимое просто растягивается, может кэшироваться и использоваться повторно, но кэшированная анимация, в которой изменение содержимого будет иметь ужасную производительность.
Файлы изображений, как правило, быстрее.
imageNamed:
вместо initWithData:
Вне экрана требует больше работы, но позволяет достичь большего.
-[CALayer setShouldRasterize:YES]
и -[CALayer setRasterizationScale:]
.Растягиваемые изображения, независимо от того, считываются ли они из файлов изображений или создаются чертежом, занимают меньше памяти. Вытягивание является недорогой операцией для графического процессора.
Производительность - это только проблема, если ее недостаточно. Используйте все, что быстрее, чтобы кодировать, если не нажано иначе. Самая быстрая программа - та, которая первыми выходит на рынок.
Некоторое интересное чтение:
По моему опыту всегда лучше использовать изображения с точки зрения производительности, но иногда вам нужно рисовать вещи вручную.
Я думаю, изображения лучше для его производительности. Но когда мы хотим разработать что-то, что может быть изменено (например, изменение цвета, изменение формы и т.д.), Масштабировано или может быть анимировано, тогда мы должны перейти к основной графике.
Основная графика удивительна, когда мы хотим что-то нарисовать с некоторой математической логикой и хотим поиграть с этим! В школах мы все изучаем уравнение окружности, уравнение линии и т.д. В математике. Базовая графика - это правильный инструмент для визуализации наших математических знаний и создания еще более сумасшедших вещей!
Базовая графика также очень полезна для приложений типа моделирования.