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

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

Жанры

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

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

Шрифт:

нашего контроллера вида */

return;

} else {

beenHereBefore = YES;

self.assetsLibrary = [[ALAssetsLibrary alloc] init];

}

if ([self isPhotoLibraryAvailable] &&

[self canUserPickVideosFromPhotoLibrary]){

UIImagePickerController *imagePicker =

[[UIImagePickerController alloc] init];

/* Задаем
тип источника для библиотеки фотографий. */

imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

/* Требуется, чтобы пользователь мог выбирать видеоролики

из библиотеки. */

NSArray *mediaTypes = [[NSArray alloc] initWithObjects:

(__bridge NSString *)kUTTypeMovie, nil];

imagePicker.mediaTypes = mediaTypes;

/* Задаем делегат для текущего контроллера вида. */

imagePicker.delegate = self;

/* Отображаем окно для выбора изображений. */

[self.navigationController presentModalViewController: imagePicker

animated: YES];

}

}

Далее нам необходимо узнать, когда пользователь сделает выбор (то есть выберет видеоролик). Обработаем различные сообщения делегата, обслуживающего инструмент для выбора изображений:

— (void) imagePickerController:(UIImagePickerController *)picker

didFinishPickingMediaWithInfo:(NSDictionary *)info{

NSLog(@"Picker returned successfully.");

NSString *mediaType = [info objectForKey:

UIImagePickerControllerMediaType];

if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]){

self.videoURLToEdit =

[info objectForKey: UIImagePickerControllerMediaURL];

}

[picker dismissModalViewControllerAnimated: YES];

/* Сначала убедимся, что редактор видео способен обрабатывать видео,

путь к которому в папке документов мы указали. */

if ([UIVideoEditorController canEditVideoAtPath: videoPath]){

/* Инстанцируем редактор видео. */

UIVideoEditorController *videoEditor =

[[UIVideoEditorController alloc] init];

/* Становимся делегатом видеоредактора. */

videoEditor.delegate = self;

/* Убеждаемся,
что задали путь к видеоролику. */

videoEditor.videoPath = videoPath;

/* А теперь отображаем видеоредактор. */

[self.navigationController presentModalViewController: videoEditor

animated: YES];

self.videoURLToEdit = nil;

} else {

NSLog(@"Cannot edit the video at this path");

}

}

}];

}

— (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker{

NSLog(@"Picker was cancelled");

self.videoURLToEdit = nil;

[picker dismissViewControllerAnimated: YES completion: nil];

}

В данном примере пользователь может выбрать любое видео из библиотеки фотографий. Как только он это сделает, мы отобразим контроллер видеоредактора, указав путь к видеоролику. Этот путь передает нам инструмент для выбора видео в методе делегата.

Делегат контроллера видеоредактора получает важные сообщения о состоянии этого видеоредактора. Объект делегата должен соответствовать протоколам UIVideoEditorControllerDelegate и UINavigationControllerDelegate. В данном примере мы решили, что делегатом видеоредактора должен стать контроллер вида. Как только редактирование будет закончено, объект делегата получит от контроллера видеоредактора метод делегата videoEditorController: didSaveEditedVideoToPath:. Путь к отредактированному видео будет передан в параметре didSaveEditedVideoToPath.

Прежде чем попытаться отобразить для пользователя интерфейс видеоредактора, нужно вызывать метод класса canEditVideoAtPath:, относящийся к классу UIVideoEditorController. Мы это делаем, чтобы убедиться, что тот путь, который вы пытаетесь редактировать, доступен для обработки в контроллере. Если возвращаемое значение этого метода класса равно YES, можно переходить к конфигурированию и отображению интерфейса редактора видео. Если нет — идем другим путем. Возможно, потребуется отобразить для пользователя предупреждение.

См. также

Разделы 13.6 и 13.7.

Глава 14. Многозадачность

14.0. Введение

Многозадачность — это способ работы, обеспечивающий фоновое выполнение. Иначе говоря, приложение может работать как обычно — выполнять задачи, порождать новые потоки, слушать уведомления, реагировать на события, — но просто ничего не отображать на экране и не взаимодействовать с пользователем каким-либо образом. Когда пользователь нажимает на устройстве кнопку Home (Домой) — в более ранних версиях iPhone и iPad эта кнопка завершала работу приложения, — программа просто переходит в фоновый режим.

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

Ночь Стилета - 2

Канушкин Роман Анатольевич
5.00
рейтинг книги
Ночь Стилета - 2

Мастера авангарда

Останина Екатерина Александровна
Научно-образовательная:
история
5.00
рейтинг книги
Мастера авангарда

Хождение за три неба

Языков Олег Викторович
Вселенная EVE Online
Фантастика:
фэнтези
6.45
рейтинг книги
Хождение за три неба

Юлий Цезарь

Утченко Сергей Львович
Научно-образовательная:
история
6.80
рейтинг книги
Юлий Цезарь

Слово авторитета

Сухов Евгений Евгеньевич
Я – вор в законе
Детективы:
боевики
7.77
рейтинг книги
Слово авторитета

Огонь

Сокол Лена
Любовные романы:
5.00
рейтинг книги
Огонь

12

Санивский Сергей Анатолиевич
5.00
рейтинг книги
12

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.75
рейтинг книги
Кодекс Охотника. Книга VI

Сердце

Рерих Елена Ивановна
Религия и эзотерика:
прочая религиозная литература
5.00
рейтинг книги
Сердце

Танцы на снегу

Лукьяненко Сергей Васильевич
2. Геном
Фантастика:
научная фантастика
9.23
рейтинг книги
Танцы на снегу

Под-Московье

Калинкина Анна Владимировна
Вселенная Метро 2033
Фантастика:
боевая фантастика
постапокалипсис
5.29
рейтинг книги
Под-Московье

См. статью «Любовь»

Гроссман Давид
Проза:
современная проза
5.00
рейтинг книги
См. статью «Любовь»

Путь

Yagger Егор
Фантастика:
космическая фантастика
4.25
рейтинг книги
Путь

Пожиратель Душ

Орлов Антон
Фантастика:
боевая фантастика
8.12
рейтинг книги
Пожиратель Душ