Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

— (void)viewDidLoad{

[super viewDidLoad];

self.myWebView = [[UIWebView alloc] initWithFrame: self.view.bounds];

[self.view addSubview: self.myWebView];

NSString *htmlString = @"iOS 7 Programming <strong>Cookbook</strong>";

[self.myWebView loadHTMLString: htmlString

baseURL: nil];

}

Рис. 1.65.

Загрузка форматированного текста в веб-вид

Еще один способ работы с веб-видом — загрузка в него удаленного контента, на который указывает URL. Для этого можно пользоваться методом loadRequest:. Перейдем к следующему примеру, в котором загрузим основную страницу сайта Apple в веб-вид, расположенный в нашей программе для iOS (рис. 1.66):

— (void)viewDidLoad{

[super viewDidLoad];

self.myWebView = [[UIWebView alloc] initWithFrame: self.view.bounds];

self.myWebView.scalesPageToFit = YES;

[self.view addSubview: self.myWebView];

NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];

NSURLRequest *request = [NSURLRequest requestWithURL: url];

[self.myWebView loadRequest: request];

}

Рис. 1.66. Веб-вид, в который загружена домашняя страница Apple

Может понадобиться какое-то время, прежде чем в веб-вид загрузится содержимое, которое вы туда передали. Наверное, вы заметили, что при загрузке информации в браузере Safari в левом верхнем углу экрана появляется тонкий индикатор процесса, показывающий, что ваше устройство занято загрузкой контента (рис. 1.67).

Рис. 1.67. Индикатор процесса загрузки

В iOS эта задача решается с помощью делегирования. Мы сделаем подписку на делегат веб-вида, и веб-вид будет получать уведомление всякий раз, когда делегат станет загружать контент. Когда загрузка контента завершится, мы получим от веб-вида соответствующее сообщение. Все это мы сделаем, применив свойство delegate веб-вида. Делегат веб-вида должен соответствовать протоколу UIWebViewDelegate.

Идем дальше. Теперь реализуем в контроллере нашего вида небольшой индикатор процесса. Не забывайте, что индикатор протекающего процесса уже имеется в составе приложения и мы не должны создавать его сами. Управлять этим индикатором можем с помощью метода setNetworkActivityIndicatorVisible:, относящегося к UIApplication. Итак, начнем с файла реализации контроллера вида:

@interface ViewController <UIWebViewDelegate>

@property(nonatomic, strong) UIWebView *myWebView;

@end

@implementation ViewController

Потом перейдем к реализации. Здесь мы будем использовать три метода из тех, которые объявляются в протоколе UIWebViewDelegate:

 webViewDidStartLoad: — вызывается,
как только вид начинает загрузку содержимого;

 webViewDidFinishLoad: — вызывается, как только вид заканчивает загрузку содержимого;

 webView: didFailLoadWithError: — вызывается, как только вид останавливает загрузку содержимого, например, из-за возникшей ошибки или разрыва сетевого соединения:

— (void)webViewDidStartLoad:(UIWebView *)webView{

[[UIApplication sharedApplication]

setNetworkActivityIndicatorVisible: YES];

}

— (void)webViewDidFinishLoad:(UIWebView *)webView{

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible: NO];

}

— (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible: NO];

}

— (void)viewDidLoad{

[super viewDidLoad];

self.myWebView = [[UIWebView alloc] initWithFrame: self.view.bounds];

self.myWebView.delegate = self;

self.myWebView.scalesPageToFit = YES;

[self.view addSubview: self.myWebView];

NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];

NSURLRequest *request = [NSURLRequest requestWithURL: url];

[self.myWebView loadRequest: request];

}

1.25. Отображение протекания процессов с помощью UIProgressView

Постановка задачи

Необходимо отображать на экране индикатор протекания процесса (Progress Bar), отражающий ход выполнения той или иной задачи, например индикатор загрузки файла, скачиваемого c определенного URL.

Решение

Инстанцируйте вид типа UIProgressView и разместите его в другом виде.

Обсуждение

Вид протекания процесса программисты обычно называют прогресс-баром. Образец такого вида показан на рис. 1.68.

Рис. 1.68. Простой вид с индикатором протекания процесса

Виды, отображающие протекание процессов, обычно демонстрируются пользователю для показа выполнения задачи с четко определенными начальной и конечной точками. Примером такой задачи является, например, скачивание 30 файлов. Очевидно, что такая задача будет выполнена, когда все 30 файлов будут скопированы на устройство. Вид, отображающий протекание процесса, является экземпляром UIProgressView и инициализируется с помощью специального метода-инициализатора данного класса — initWithProgressViewStyle:. В качестве параметра данный метод принимает стиль (оформление) панели протекания, которую предполагается создать. Этот параметр относится к типу UIProgressViewStyle и, соответственно, может иметь одно из следующих значений:

Поделиться:
Популярные книги

Звездная Кровь. Экзарх I

Рокотов Алексей
1. Экзарх
Фантастика:
боевая фантастика
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Звездная Кровь. Экзарх I

Старый, но крепкий 3

Крынов Макс
3. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 3

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Лекарь Империи 9

Карелин Сергей Витальевич
9. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
5.00
рейтинг книги
Лекарь Империи 9

Гримуар темного лорда III

Грехов Тимофей
3. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда III

Девочка из прошлого

Тоцка Тала
3. Айдаровы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка из прошлого

Дорогами алхимии

Видум Инди
2. Под знаком Песца
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Дорогами алхимии

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Сильнейший Столп Империи. Книга 1

Ермоленков Алексей
1. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 1

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Александри В. Стихотворения. Эминеску М. Стихотворения. Кошбук Д. Стихотворения. Караджале И.-Л. Потерянное письмо. Рассказы. Славич И. Счастливая мельница

Эминеску Михай
126. Библиотека всемирной литературы
Поэзия:
поэзия
5.00
рейтинг книги
Александри В. Стихотворения. Эминеску М. Стихотворения. Кошбук Д. Стихотворения. Караджале И.-Л. Потерянное письмо. Рассказы. Славич И. Счастливая мельница

Идеальный мир для Лекаря 10

Сапфир Олег
10. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 10

Мой муж – чудовище! Изгнанная жена дракона

Терин Рем
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мой муж – чудовище! Изгнанная жена дракона