Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
#1

Кеширование картинок - Программирование iOS

07.11.2014, 15:39. Просмотров 1024. Ответов 8
Метки нет (Все метки)

Доброго времени суток. Подскажите как правильно организовать хранение и отображение картинок. В json пакете получаю адреса картинок с этим проблем нет. Но как правильно организовать оффлайн версию приложения? Что бы я мог отображать эти картинки без доступа в интернет?
Как вариант можно скачать все картинки по указанным адресам и хранить их где то в каталоге приложения, но насколько эта идея хороша? Ведь картинок может быть много, а это заставит пользователя ждать пока скачаются все картинки (в tableview будет только текст без картинок которые еще только грузятся), плюс размер приложения увеличится или может это нормальная практика, но может подскажите как ее лучще реализовать например скачивание в отдельный поток засунуть? Может есть готовые фреймворки?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2014, 15:39     Кеширование картинок
Посмотрите здесь:

Кеширование данных запросов в приложении - Objective-C
Какие вы знаете инструменты для работы с сетью (http) которые позволяют кешировать запросы, чтобы можно было получить данные даже в offline...

Скролинг картинок - Программирование iOS
Здравствуйте. Подскажите как правильно сделать процесс листания картинок. Я просто видел несколько вариантов реализации и через...

Отображение картинок во втором vc - Программирование iOS
Вечер добрый. У меня в первом контроллере загружаются картинки. Во втором контролере эти картинки показываются (одна их них). Картинки...

Загрузка картинок в ячейках TableView - Objective-C
Всем привет! Метод LoadingImage вызывается при создании ячейки tableview, а в методе connectionDidFinishLoading данные еще не загружены...

Загрузка картинок по ссылке из массива - Objective-C
Доброго вечера всем? вообщем занимаюсь парсингом json, есть массив в который я получаю список ссылков из сервера для ввода их в таблицу, но...

Просмотр картинок, кнопки back, forward - Программирование iOS
Здравствуйте. Интересует вопрос как сделать перелистывание картинок? Все картинки находится в одной папке, как сделать, что бы при нажатии...

Какой подход правильный в хранении и отображении картинок в приложении? - Программирование iOS
Доброго времени суток, уважаемые форумчане. Столкнулся вот с какой ситуацией. У меня в приложении (iPnone) хранится 120 картинок и они...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
08.11.2014, 15:22     Кеширование картинок #2
да это на самом деле тривиальная задача, в интернете куча способов загрузки картинок в таблицу на фоне
сначала отображаете легковесные данные, потом догружаете тяжеловесные

оффлайн версия - тоже просто, у вас есть локальная база данных, в ней храните пути к картинкам либо просто имена файлов, а когда будете отображать их оффлайн, просто по имени собираете путь и получаете картинку из локальной файловой системы, куда вы их сохранили

то, что размер приложения увеличивается, это тоже нормально
вы, конечно, можете чистить кеш (данные из базы и картинки), когда пройдет определенное время или перейдете на другой скрин, или закроете приложение и тд
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
12.11.2014, 14:42     Кеширование картинок #3
Пользователь не будет ждать если они будут качаться в другом потоке, чтобы не тормозил UI. Как я делал для отображения в каждой ячейке аватарки пользователя:
Objective-C
1
2
3
4
5
6
7
8
NSURLRequest* request = [NSURLRequest request WithURL:"url картинки"];
__weak UITableViewCell* weakCell = cell;
cell.imageView.image = nil;
[cell.imageView setImageWithURLRequest:request placeholderImage:nil  success^(параметры блока){
weakCell.imageView.Image = image;
[weakCell layoutSubviews];
}
failure:^(параметры блока)
. Ты предусмотри еще то, что у тебя не сразу все картинки качаются. Скачалось, скажем, 8. потом проскроллил - еще 8. B и т.д. И никаких тормозов - приложение летает. Ну а если в оффлайне тебе надо будет отображать, то тогда в кордате храни данные
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
12.11.2014, 22:14  [ТС]     Кеширование картинок #4
не, я понимаю что в отдельном потоке будут качаться картинки, меня интересует вопрос, показывать что то на месте предполагаемой картинки, какую то дефолтную картинку или ничего не показывать, пусть будет пустая область?
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
12.11.2014, 23:04     Кеширование картинок #5
Это как ты хочешь. Посмотри выше где я писал. Там placeholderImage нил я ставил. А можешь поставить что тебе нужно)
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
12.11.2014, 23:47     Кеширование картинок #6
если на экране немного картинок, то можно активити индикатор ставить, пусть крутится пока картинка не загрузится
а если в таблице много ячеек, то будет немного раздражать куча колесиков, потому лучше что-то дефолтное поставить
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
17.11.2014, 12:22  [ТС]     Кеширование картинок #7
а картинки лучше хранить в файловой системе или в CoreData? Как это скажется на скорости работы приложения или скорость загрузки картинок (или других файлов) из coreData и файловой системы примерно одинаковый?
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
17.11.2014, 13:46     Кеширование картинок #8
я бы хранил в coreData пути на картинки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 13:51     Кеширование картинок
Еще ссылки по теме:

Как сделать асинхронную загрузку картинок в UITableView не останавливая главный поток? - Objective-C
Точнее как показать асинхронно загруженные картинки не останавливая главный поток? Есть UITableViewController, по мере появления ячеек...

запрет на кеширование картинок - PHP
Здравствуйте. Подскажите, пожалуйста, как ввести запрет на кеширование картинок. Дело в том, что у меня есть папка pict, в кот хранятся...

Кеширование - C#
Здравствуйте, есть сайт, который в ответе сервера отсылает: Cache-Control: public,max-age=30 Date: Tue, 18 Nov 2014 08:32:11 GMT ...

Кеширование - PHP
Здравствуйте. Есть PHP скрипт, который динамически создаёт JavaScript-код, который будет подключён на чужих сайтах. Включено...

Кеширование - PHP
Добрый день! У меня вопрос, видимо, связан с каким-то неведомым мне кешированием. Есть скрипт index.php Его полный текст <?php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
17.11.2014, 13:51     Кеширование картинок #9
vitali36, главное не абсолютные...
Yandex
Объявления
17.11.2014, 13:51     Кеширование картинок
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru