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

Показать loader пока image не загрузился - Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
albert102
 Аватар для albert102
-21 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 53
13.11.2013, 09:46     Показать loader пока image не загрузился #1
доброе утро!

загружаю картинку из интернета таким способом.

Код
UIImage *pImage=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]];;
[imageView setImage:pImage];
но как отобразить loader пока фотография в 1мб загрузится?
подскажите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 09:46     Показать loader пока image не загрузился
Посмотрите здесь:

Спрятать, показать картинку Image при выполнении условия. Delphi
C# WPF Локализация. Нужен совет, пока не поздно, пока не наделал ошибок.
Показать координаты курсора на Image Delphi
Как поместить объект текстуры в UIImage *image? Objective-C
показать картинку загрузки пока идет запрос jQuery
Mac OS open-edit-save image? Objective-C
Objective-C Кастомная таблица не отображает ячейки, пока я не буду ее прокручивать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
13.11.2013, 10:37     Показать loader пока image не загрузился #2
Ни в коем случае не грузите синхронно в главном потоке.
И все будет хорошо.
albert102
 Аватар для albert102
-21 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 53
13.11.2013, 10:43  [ТС]     Показать loader пока image не загрузился #3
объясните подробнее.
то есть,чтобы не подвисало на время приложение, не делать это в одной функции? написать вторую для этого?
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
13.11.2013, 10:59     Показать loader пока image не загрузился #4
Называйте вещи правильно. Вы называете функциями - методы.
Почитайте что такое потоки.
В концепции iOS главный поток преимущественно для работы с графическим интерфейсом.
Для того, чтобы что-либо "качать" нужно создать/переключиться в другой поток и сделать эту работу в нем.

В вашем случае это будет так(самый просто вариант):
Objective-C
1
2
3
4
5
6
7
8
9
//Показываете индикатор загрузки
__block UIImageView *imageView = self.someImageView;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://eofdreams.com/data_images/dreams/image/image-07.jpg"]]];
    dispatch_async(dispatch_get_main_queue(), ^{
        //Скрываете индикатор загрузки
        imageView.image = image;
    });
});
albert102
 Аватар для albert102
-21 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 53
13.11.2013, 11:04  [ТС]     Показать loader пока image не загрузился #5
Цитата Сообщение от zulkis Посмотреть сообщение
Называйте вещи правильно. Вы называете функциями - методы.
Почитайте что такое потоки.
В концепции iOS главный поток преимущественно для работы с графическим интерфейсом.
Для того, чтобы что-либо "качать" нужно создать/переключиться в другой поток и сделать эту работу в нем.

В вашем случае это будет так(самый просто вариант):
Objective-C
1
2
3
4
5
6
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://eofdreams.com/data_images/dreams/image/image-07.jpg"]]];
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.headerView.photoView setImage:image];
        });
    });
понял, спасибо!
но еще один момент, пока фотка не загрузилась еще, как анимацию загрузки показать?
неужели так

loader.StarAnimation;
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://eofdreams.com/data_images/dreams/image/image-07.jpg"]]];
dispatch_async(dispatch_get_main_queue(), ^{
[self.headerView.photoView setImage:image];
});
loader.StopAnimation;

??
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
13.11.2013, 11:04     Показать loader пока image не загрузился #6
Отредактировал предыдущее сообщение. Там все есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 11:05     Показать loader пока image не загрузился
Еще ссылки по теме:

Файл остается заблокированным до тех пор, пока объект Image не будет ликвидирован C# .NET 4.x
C# Создать Loader, который ждет пока не откроется нужный процесс а после чего заменяет массив байтов другим
Objective-C Как при дозагрузке данных показать UIActivityIndicatorView внизу UITableView?
Показать уведомление, пока идет фильрация (обработка данных) Delphi БД Interbase
Swift Image или замена картинки

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

Или воспользуйтесь поиском по форуму:
albert102
 Аватар для albert102
-21 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 53
13.11.2013, 11:05  [ТС]     Показать loader пока image не загрузился #7
zulkis, ааа, все ясно.
спасибо еще раз, Вы очень помогли!
Yandex
Объявления
13.11.2013, 11:05     Показать loader пока image не загрузился
Ответ Создать тему
Опции темы

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