Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
#1

Загрузка изображения через URL + UIActivityIndicatorView

20.04.2014, 17:27. Просмотров 1382. Ответов 6
Метки нет (Все метки)

хочу загрузить изображение через URL

в сториборде вставил UIImageView и UIActivityIndicator, сделал свойства, но не понимаю, как сделать так, чтобы индикатор крутился до того, как загрузится изображение, а после этого вылетало изображение и пропадал индикатор
вот, что смог написать, используя советы со стековерфлоу. Как мне узнать, когда загрузилась картинка, чтобы потом вывести ее на экран и убрать индикатор?
.h
Objective-C
1
2
3
4
5
6
@interface RoomMapViewController : UIViewController
 
@property (weak, nonatomic) IBOutlet UIImageView *imageRoomMap;
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator;
 
@end
.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#import "RoomMapViewController.h"
 
@interface RoomMapViewController ()
 
@end
 
@implementation RoomMapViewController
 
@synthesize imageRoomMap;
@synthesize activityIndicator;
 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [activityIndicator startAnimating];
    [self.view addSubview:activityIndicator];
    self.view.userInteractionEnabled = NO;
    
    
    NSURLRequest* updateRequest = [NSURLRequest requestWithURL: [NSURL URLWithString:@"https://www.someURL"]];
    NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:updateRequest  delegate:self];
    
    [connection start];
    
    
    
    //imageRoomMap.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://someURL"]]];
}
 
 
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
 
@end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 17:27
Ответы с готовыми решениями:

Как при дозагрузке данных показать UIActivityIndicatorView внизу UITableView?
Есть UITableViewController, в tableView: willDisplayCell: forRowAtIndexPath:...

Загрузка изображения с URL
Добрый день. Мне нужно загрузить картинку с url адреса на компьютер (или есть...

Загрузка файла через URL и сохранение его в IsolatedStorage
Совственно задача простая. Есть прямая ссылка на файл. Этот файл нужно...

Последовательная загрузка URL в webbrowser через 10 секунд из массива по таймеру
Что у меня неправильно? у меня в данный момент загружается всегда последний...

Загрузка изображения через функцию
Здравствуйте. Не могу загрузить изображение на сервер. Делаю модульный...

6
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
21.04.2014, 07:14 #2
Смотрите методы протокола NSURLConnectionDownloadDelegate и когда отработает
Objective-C
1
- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL;
выключайте анимацию свою и ставьте картинку из destinationURL;
1
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
21.04.2014, 18:37  [ТС] #3
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
- (void)viewDidLoad
{
    [activityIndicator startAnimating];
    NSURLConnection *connection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"some url"]] delegate:self];
    [self connectionDidFinishDownloading:connection destinationURL:[NSURL URLWithString:@"someurl"]];
    [super viewDidLoad];
}
 
- (void) connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL
{
    [activityIndicator stopAnimating];
    imageRoomMap.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:destinationURL]];
}
написал вот так, но картинка появляется на долю секунды и исчезает, в чем ошибка?

прописать протокол в .h файле не забыл
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
22.04.2014, 12:11 #4
lowlol,
Objective-C
1
- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL;
это метод протокола...

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
- (void)viewDidLoad
{
    [super viewDidLoad];
    [activityIndicator startAnimating];
    NSURLConnection *connection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"some url"]] delegate:self];
    [connection start];
}
 
- (void) connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL
{
    [activityIndicator stopAnimating];
    imageRoomMap.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:destinationURL]];
}
1
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
22.04.2014, 14:39  [ТС] #5
zulkis, я понял, что это метод протокола. я его переопределил и вызвал его для self, почему это неправильно?
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
22.04.2014, 16:47 #6
lowlol, почитайте описание NSURLConnection и протоколов, которые он поддерживает.
И разберитесь как работает делегирование. И для чего вы передаете self в:
Objective-C
1
NSURLConnection *connection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"some url"]] delegate:self];
0
noname_club
104 / 95 / 12
Регистрация: 01.05.2013
Сообщений: 600
25.04.2014, 09:37 #7
для изображений обычно требуется система кеширования.

Просмотри в сторону SDWebImage и его аналогов
0
25.04.2014, 09:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 09:37

Загрузка изображения через LoadFromFile
Почему неизвестен формат? с++ вроде ж поддерживает png Или что то не так...

Загрузка изображения в память через WinInet
Как загрузить изображение с url в Stream, а потом в Image на WinInet ? На Indy...

Загрузка изображения через openDialog в PictureBox
Всем доброго времени суток, нужно изображение которое я выбираю через...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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