Представлять контроллер представления коммита модально вместо нажатия при использовании 3D Touch Peek & Pop
У меня есть приложение, которое позволяет пользователям просматривать фотографии в UICollectionViewController
это встроено в UINavigationController
, Когда пользователь нажимает, чтобы просмотреть фотографию, я представляю новый контроллер просмотра модально на весь экран (не по умолчанию на весь экран). Теперь я хочу внедрить контроллер представления 3D Touch (pop), который будет отображаться точно так же, как когда пользователь просто нажимает на фотографию. Проблема заключается в том, что, когда вы открываете полноэкранную фотографию, iOS за кулисами выталкивает этот контроллер представления в стек - панель навигации все еще видна и добавляет кнопку возврата, чтобы вернуться к предыдущему экрану. Я не хочу этого, я хочу, чтобы контроллер представления коммита был представлен модально.
Я заметил, что если я удалю контроллер навигации, iOS представит контроллер представления коммита вместо нажатия. Но я не могу удалить свой навигационный контроллер, и он все еще просто отображается на весь экран, а не на весь экран.
Как я могу изменить поведение по умолчанию, чтобы контроллер представления коммита был представлен модально в полноэкранном режиме, а не помещен в стек, когда контроллер исходного представления встроен в контроллер навигации?
Я пытался установить modalPresentationStyle
в .OverFullScreen
когда я настраиваю контроллер представления коммита в previewingContext:commitViewController:
, Это, казалось, не имело никакого значения.
Текущее поведение является проблемой по нескольким причинам:
- Я представляю на весь экран, так что базовый контроллер представления все еще виден снизу, размыто. Когда это нажато, этот эффект не может быть достигнут.
- Я представляю полноэкранное фото, используя пользовательский переход, используя UIViewControllerTransitioningDelegate
и он также переходит при увольнении. При отклонении этого после нажатия он выполняет только поп-анимацию по умолчанию вместо моей пользовательской анимации.
1 ответ
Догадаться! Просто установите modalPresentationStyle
в .OverFullScreen
и, что очень важно, вместо звонка showViewController
в previewingContext:commitViewController:
, вызов presentViewController
, Просто. Не могу поверить, что я не видел это до публикации.:)