5

Я создаю универсальное приложение. Для одного экрана я показываю 6 изображений (формат png) в сетке с помощью управления this. Также этот экран поддерживает как портретную, так и альбомную ориентацию.Размер приложения слишком велик из-за слишком большого количества изображений

Я создал набор изображений в разных разрешениях для всех iDevices и назвал их, используя правильное соглашение об именах следующим образом.

И я должен был создать другой набор этих изображений, так как поддерживаю обе ориентации, и я не могу использовать те же изображения, что и выше, потому что в ландшафте он растягивается.

Теперь у меня есть около 60 изображений только для одного экрана, и приложение уже весит ~ 40 МБ! Само собой разумеется, это неприемлемо.

Мой вопрос в том, необходимо ли создавать отдельные изображения для всех этих размеров/устройств и ориентации? Не могу ли я создать набор только для отображения сетчатки и будет ли он уменьшаться для обычных дисплеев? Если это невозможно, есть ли способ уменьшить размеры изображений?

спасибо.

+0

такая же проблема сталкивается ... –

+4

Попробуйте http://tinypng.org/ для уменьшения размера изображения PNG. – Amar

+0

@Amar Спасибо. Я сохраняю сжатые изображения в качестве второго варианта на данный момент. Потому что созданное так много изображений - утомительная задача.Поэтому, если есть способ уменьшить это, я буду здорово. Если нет, мне придется вернуться к методу сжатия. :) – Isuru

ответ

2

Не является обманчивым, но вы должны по крайней мере балансировать с другими факторами. Основная проблема, если вы этого не делаете, связана с проблемами памяти (ОЗУ), большие изображения занимают много места в памяти, а устройства с более низким разрешением имеют меньше памяти, чем сетчатые. Таким образом, сокращение не самый лучший вариант.
Возможное решение - взять одно «большое» изображение, которое может быть изменено и для других. Для этого вам нужно перерисовать изображения с помощью Core Graphics или ImageIO, эта библиотека может быть полезной NYXImagesKit. Конечно, есть цена, чтобы заплатить:

  1. это требует времени вычислений
  2. источник «большое изображение» должны быть открыты по крайней мере один раз, чтобы сделать расчет, если вы уже не хватает памяти, она может быть проблема

Существует еще одно решение для элементов графического интерфейса (не только), используйте изображение в формате PDF. Вы можете найти интересную статью: here by Matt Gemmel
Если ваши изображения не используют альфа-канал, перейдите с jpg !!!!

+0

Эй, Андреа, спасибо за ответ. Чтобы проверить это, я просто использовал набор изображений, которые я создал для отображения сетчатки, и запускал их как в сетчатке, так и в нормальных дисплеях. На обычном экране он использует изображения сетчатки, и я не вижу никаких проблем или изменений. Трудно определить разницу в эмуляторах iPhone? Нужно ли проверять его на реальных устройствах? – Isuru

+0

Ну нет заметных изменений, если вы предоставляете один вид изображения для каждого разрешения без их перерисовки, изображения просто строятся. Поскольку у симулятора есть одно и то же оборудование вашего Mac, вы также не заметите проблем с памятью. Проблема может случиться на реальном устройстве, на iphone 3g o 3gs Загрузка изображений сетчатки может быстро заполнить RAM, а в некоторых случаях это может привести к сбоям – Andrea

+0

Я вижу. Спасибо за всю информацию. :) – Isuru

3

Нет необходимости создавать изображения для отображения не сетчатки и сетчатки. Вы можете использовать только «изображения сетчатки» (если возможно, в формате JPG). Когда вам нужно отображать изображения меньшего размера, вы можете использовать «aspect fit» для уменьшения больших изображений. Там может быть какой-то качественный компромисс.

Аналогично, для изображений iPhone 5 вы можете обрезать более длинные изображения, используя свойство clipToBounds, чтобы вырезать нежелательные части на меньших экранах.

Смежные вопросы