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

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
#1

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

20.04.2014, 17:27. Просмотров 1262. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 17:27     Загрузка изображения через URL + UIActivityIndicatorView
Посмотрите здесь:
Objective-C Как при дозагрузке данных показать UIActivityIndicatorView внизу UITableView?
Загрузка изображения с URL PHP
Загрузка файла через URL и сохранение его в IsolatedStorage Windows Phone
Последовательная загрузка URL в webbrowser через 10 секунд из массива по таймеру C#
Загрузка изображения через LoadFromFile C++ Builder
Загрузка изображения через функцию jQuery
C# Загрузка изображения через openDialog в PictureBox
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.04.2014, 07:14     Загрузка изображения через URL + UIActivityIndicatorView #2
Смотрите методы протокола NSURLConnectionDownloadDelegate и когда отработает
Objective-C
1
- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL;
выключайте анимацию свою и ставьте картинку из destinationURL;
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
21.04.2014, 18:37  [ТС]     Загрузка изображения через URL + UIActivityIndicatorView #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 файле не забыл
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.04.2014, 12:11     Загрузка изображения через URL + UIActivityIndicatorView #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]];
}
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
22.04.2014, 14:39  [ТС]     Загрузка изображения через URL + UIActivityIndicatorView #5
zulkis, я понял, что это метод протокола. я его переопределил и вызвал его для self, почему это неправильно?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.04.2014, 16:47     Загрузка изображения через URL + UIActivityIndicatorView #6
lowlol, почитайте описание NSURLConnection и протоколов, которые он поддерживает.
И разберитесь как работает делегирование. И для чего вы передаете self в:
Objective-C
1
NSURLConnection *connection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"some url"]] delegate:self];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 09:37     Загрузка изображения через URL + UIActivityIndicatorView
Еще ссылки по теме:
Загрузка изображения в память через WinInet Delphi
Visual Basic Загрузка изображения в access через прогу на vb
Загрузка на форму изображения через контрол UploadFile C# MVC
Загрузка изображения на сайт (можно через Webbrowser) C#
Асинхронная загрузка изображения через привязку к Image.Source C# WPF

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

Или воспользуйтесь поиском по форуму:
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
25.04.2014, 09:37     Загрузка изображения через URL + UIActivityIndicatorView #7
для изображений обычно требуется система кеширования.

Просмотри в сторону SDWebImage и его аналогов
Yandex
Объявления
25.04.2014, 09:37     Загрузка изображения через URL + UIActivityIndicatorView
Ответ Создать тему
Опции темы

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