Представлять контроллер представления коммита модально вместо нажатия при использовании 3D Touch Peek & Pop

У меня есть приложение, которое позволяет пользователям просматривать фотографии в UICollectionViewController это встроено в UINavigationController, Когда пользователь нажимает, чтобы просмотреть фотографию, я представляю новый контроллер просмотра модально на весь экран (не по умолчанию на весь экран). Теперь я хочу внедрить контроллер представления 3D Touch (pop), который будет отображаться точно так же, как когда пользователь просто нажимает на фотографию. Проблема заключается в том, что, когда вы открываете полноэкранную фотографию, iOS за кулисами выталкивает этот контроллер представления в стек - панель навигации все еще видна и добавляет кнопку возврата, чтобы вернуться к предыдущему экрану. Я не хочу этого, я хочу, чтобы контроллер представления коммита был представлен модально.

Я заметил, что если я удалю контроллер навигации, iOS представит контроллер представления коммита вместо нажатия. Но я не могу удалить свой навигационный контроллер, и он все еще просто отображается на весь экран, а не на весь экран.

Как я могу изменить поведение по умолчанию, чтобы контроллер представления коммита был представлен модально в полноэкранном режиме, а не помещен в стек, когда контроллер исходного представления встроен в контроллер навигации?

Я пытался установить modalPresentationStyle в .OverFullScreen когда я настраиваю контроллер представления коммита в previewingContext:commitViewController:, Это, казалось, не имело никакого значения.

Текущее поведение является проблемой по нескольким причинам:
- Я представляю на весь экран, так что базовый контроллер представления все еще виден снизу, размыто. Когда это нажато, этот эффект не может быть достигнут.
- Я представляю полноэкранное фото, используя пользовательский переход, используя UIViewControllerTransitioningDelegateи он также переходит при увольнении. При отклонении этого после нажатия он выполняет только поп-анимацию по умолчанию вместо моей пользовательской анимации.

1 ответ

Решение

Догадаться! Просто установите modalPresentationStyle в .OverFullScreenи, что очень важно, вместо звонка showViewController в previewingContext:commitViewController:, вызов presentViewController, Просто. Не могу поверить, что я не видел это до публикации.:)

Другие вопросы по тегам