У меня был похожий вопрос, поэтому я рассчитал время на разные подходы. В большинстве простых случаев рисования (например, в примере с прямоугольником) загрузка изображения с диска казалась немного медленнее, чем при рисовании, возможно, из-за требуемого доступа к диску. В этих случаях я остановился на использовании процедур рисования Quartz просто из-за гибкости, которую они мне дают. Если в будущем я захочу изменить размер элемента пользовательского интерфейса (возможно, для поддержки дисплея с большим или большим разрешением), мне потребуется повторно отрендерить все мои изображения, где векторные рисунки будут масштабироваться по мере необходимости.
Одна из областей, где я увидел значительный выигрыш в производительности, - большой радиальный градиент, который я рисую в качестве фона. В Shark я мог видеть, что вызов CGContextDrawRadialGradient () отнимает много процессорного времени. Когда я заменил нарисованный кварцем радиальный градиент статическим изображением, я увидел заметное сокращение времени запуска приложения (этот фон помещается во время запуска приложения). Как ни странно, я также увидел сокращение использования памяти приложения примерно на 0,5 МБ, что я не могу полностью объяснить.
Если вы хотите проверить это самостоятельно, я настоятельно рекомендую выбрать редактор изображений Opacity , который может генерировать кварцевый код для чертежа (включая полный подкласс UIView или CALayer), а также выводить PNG того же рисунка. Это упрощает реализацию обоих путей в вашем приложении и их тестирование.