ли мы выводим из проверки разрешения экрана, что это полноэкранные изображения? Если это так, для полноэкранной анимации с 60 изображениями требуется необычайный объем памяти, и я не удивлен, что вы получите предупреждения о памяти. Каждое изображение, используемое в UIImageView
, потребует не менее четырех байтов на пиксель.
Для изображений без сетчатки на 4-дюймовом экране, для которых требуется 60 изображений в полноэкранном режиме, требуется примерно 42 МБ. Если это изображения сетчатки (с удвоенной разрешающей способностью), которые перескакивают до 166 мб. Не смотрите на размер PNG-файлы при рассмотрении объема используемой памяти, потому что файлы PNG имеют некоторое сжатие, но они будут несжаты, если вы используете их в своем приложении.
Как правило, вы не хотите, чтобы анимация использовала много полноэкранных изображений. хотелось бы, вероятно, рассмотреть программную анимацию представления с использованием анимации UIKit или Core Animation (или других подобных технологий). Или, если вам действительно нужно использовать последовательность изображений, посмотрите, можете ли вы ограничить часть, которая анимирована на меньшую часть экран, используя меньшие изображения и требуя f меньше памяти.
Трудно сказать, не зная, как выглядит анимация. Если вы описываете анимацию (или покажете нам снимок экрана или два), мы, возможно, предложим гораздо меньше подходов к работе с памятью.
В комментариях вы поделились link to a video, который показывает желаемый калейдоскопической эффект. Несколько мыслей:
Сначала я обратил внимание на программные способы визуализации калейдоскопических эффектов. Учитывая сложность здесь, это может привести меня к исследованиям подходов «OpenGL ES» для рендеринга этого калейдоскопического эффекта. У вас может быть даже шанс на некоторые существующие реализации.
Я заметил, что есть Основные фильтры изображений для CIKaleidoscope
и CITriangleKaleidoscope
, которые могут быть полезны при создании эффекта, который вы ищете (см Core Image Filter Reference для получения информации об этих двух фильтрах). Я не думаю, что они будут здесь совершенно правы, но работа проверяется.
Неспособность выполнить вышеуказанные попытки программно отображать калейдоскоп, мне кажется, что, по крайней мере, вы могли бы уменьшить требования к памяти вашей текущей реализации в четыре раза, учитывая, что эффект калейдоскопа как бы горизонтально и вертикально-симметрично. Таким образом, теоретически вы можете иметь последовательность изображений для верхнего левого квадранта, а затем отображать другие три в качестве преобразований одного и того же изображения.
Или вы также можете создать полноэкранное видео и использовать media player framework, чтобы воспроизвести его.
Я бы, вероятно, исчерпал эти линии запроса, прежде чем преследовать анимацию с помощью последовательности полноэкранных изображений.Полноэкранные изображения просто станут неэффективным способом решения этой проблемы, и вы почти наверняка столкнетесь с проблемами. И если вы когда-либо рассматриваете исполнение iPad приложения или хотите рассмотреть более длинные последовательности, то подход серии полноэкранных изображений, вероятно, будет полностью несостоятельным.
Все ли 60 изображений отображаются на экране одновременно? Если это кешировать изображения с размером, необходимым для отображения, если не только нарисовать видимые изображения. – Joe
Не происходит того, что после нажатия кнопки изображение меняет отображение каждого изображения в анимации по одному за раз. – DevC
Ваше предложение хорошее, но я не слишком разбираюсь в кешировании. Можете ли вы предложить? – DevC