Загрузка 20 МБ png в UIImageView, встроенный в UIScrollView - PullRequest
1 голос
/ 11 ноября 2010

У меня есть большое изображение PNG, которое мне нужно, чтобы Zoom & Move.Поэтому я создал UIScrollView и встроил UIImageView.

Приложение отлично работает в симуляторе, но при запуске его на устройстве (iPod Touch 8 ГБ) оно падает, как только загружается представление.

Я пробовал с меньшим тестовым изображением (4MB) работает нормально и подозреваю, что iPod не может обработать PNG 20 МБ.Я также пробовал разные другие форматы, такие как JPG (в различных шаблонах сохранения), но это тоже не помогло.

Есть какие-нибудь подсказки, как я могу решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 11 ноября 2010

Ой, 20М это большое изображение.Первая мысль, которая приходит на ум, вы можете порезать изображение?Т.е. вместо одного изображения есть целая куча маленьких изображений, которые вместе составляют большее изображение.Тогда вы можете загрузить по требованию так же, как Google Maps загружает квадраты изображения.

2 голосов
/ 11 ноября 2010

посмотрите на Пример ScrollViewSuite от Apple.Звучит так же, как то, что вы пытаетесь сделать.

3_Tiling демонстрирует:

  • Как создать подкласс UIScrollView для добавления плитки содержимого
  • Повторное использование плиток для оптимизации производительностии использование памяти
  • Изменение разрешения содержимого в ответ на увеличение
0 голосов
/ 13 ноября 2010

Предлагаю пример Фотокроллер .Он демонстрирует CATiledLayer, который вы можете использовать для мозаики вашего изображения и даже использовать меньшие изображения в качестве lod-изображений.Это намного меньше, чем полный пример ScrollViewSuite, но имеет все, что вам нужно, чтобы делать то, что вы хотите.Он содержит только 2 класса, которые вы можете использовать в своем проекте с незначительными правками.

Возможно, вы захотите проверить Сессия WWDC 2010 # 104 "Разработка приложений с представлениями прокрутки"... они обрабатывают и объясняют этот пример.

Вам нужно будет выложить свое изображение.Я предлагаю imagemagick для этого:)

...