GIF, о котором идет речь, имеет разрешение 480 × 288 и содержит 10 кадров.
Учитывая, что UIImageView
хранит кадры в виде 4-байтового RGBA, этот GIF занимает 4 × 10 × 480 × 288 = 5.529 600 байт в оперативной памяти, что превышает 5 мегабайт.
Существует множество способов уменьшить это, но только один из них не создает дополнительной нагрузки на процессор;другие - просто компромиссы между процессором и оперативной памятью.
Метод, о котором я говорю, это создание подклассов UIImageView
и загрузка ваших GIF-файлов вручную, сохраняя их внутреннее представление (индексированное изображение + палитра).Это позволило бы сократить использование памяти в четыре раза.
Примечание: даже если GIF-изображения могут храниться как полные изображения для каждого кадра (что имеет место для рассматриваемого GIF-файла), многие этого не делают.Наоборот, большинство кадров может содержать только те пиксели, которые изменились со времени предыдущего.Таким образом, в общем случае внутреннее представление GIF позволяет отображать кадры только в прямом порядке.
Другие способы сохранения ОЗУ включают, например, перечитывание каждого кадра с диска перед его отображением, что, безусловно, не хорошо для срока службы батареи..