Метод делегата QLPreviewController не вызывается в iOS 10, но вызывается, если выполняется раньше, чем iOS 10
Вот мой код Это может звучать как избыточный вопрос, но мой сценарий отличается, так как я не добавляю QLPreviewController в качестве подпредставления, а представляю в качестве контроллера.
После загрузки из Dropbox, я представляю это как
self.pdfViewController = [[QLPreviewController alloc] init];
self.pdfViewController.delegate = self;
self.pdfViewController.dataSource = self;
[self presentViewController:self.pdfViewController animated:YES completion:nil];
и у меня также есть QLPreviewControllerDataSource, QLPreviewControllerDelegate
указан в качестве протокола. Кроме того, он работает, если работает в более ранней версии, чем iOS 10.0.
Пожалуйста, помогите мне.
1 ответ
Похоже, iOS 10 изменил способ QLPreviewController
представлена. На iOS 9 при предварительном просмотре изображения, представив QLPreviewController
Модально я вижу хороший эффект масштабирования, и начальное состояние предварительного просмотра с черным фоном и скрытой навигацией и панелью инструментов. Я могу нажать на изображение, чтобы сделать полосы видны (который меняет фон на белый). Повторное нажатие переключает состояние.
На iOS 10 тот же код приводит к появлению белого фона и неправильной анимации масштабирования (кажется, что она появляется в нижней части экрана).
Я обнаружил, что реализация этого практически недокументированного нового метода источника данных для iOS 10 устранила проблему:
- (UIView* _Nullable)previewController:(QLPreviewController *)controller
transitionViewForPreviewItem:(id <QLPreviewItem>)item
{
return [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:MIDPhotoImageRowIndex_Image inSection:MIDPhotoSectionIndex_Image]];
}
Представление, которое я возвращаю, совпадает с previewController:frameForPreviewItem:inSourceView:
используется в качестве ссылки для исходного кадра содержимого (т. е. представление изображения в ячейке моей таблицы).
Документация для этого метода делегата на момент написания просто говорит "Нет доступных обзоров".
Реализация этого метода означала, что previewController:frameForPreviewItem:inSourceView:
теперь вызывается на iOS 10. Я просто хотел бы, чтобы был способ по умолчанию к исходному черному фону без панелей навигации.