Как сделать полноэкранное изображение и отклонить смахиванием, похожим на Apple Photos - PullRequest
0 голосов
/ 06 февраля 2019

Как я могу реализовать полноэкранное изображение и отключить функциональность изображения Apple Photos?Кроме того, как я могу получить соотношение сторон изображения в полноэкранном режиме?Они отправляют UIImage на новый контроллер представления?

Мой текущий метод полноэкранного отображения изображения просто устанавливает кадр UIImageView равным кадру суперпредставления, в то время как альфа UINavigationBar и UITabBar устанавливаются в 0. И для отклонения,Я добавил распознаватель жестов касания, который переворачивает альфы и удаляет UIImageView из суперпредставления.

Вот мой полноэкранный код и код отклонения

func fullscreen(forImage image: UIImage) {
    let imageView = UIImageView(image: image)
    imageView.frame = self.view.frame
    imageView.backgroundColor = .black
    imageView.contentMode = .scaleAspectFill
    imageView.clipsToBounds = true
    imageView.isUserInteractionEnabled = true

    self.navigationController?.navigationBar.alpha = 0
    self.tabBarController?.tabBar.alpha = 0

    let dismissTap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
    imageView.addGestureRecognizer(dismissTap)

    self.view.addSubview(imageView)
}

@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
    sender.view?.removeFromSuperview()
    self.navigationController?.navigationBar.alpha = 1
    self.tabBarController?.tabBar.alpha = 1
}

1 Ответ

0 голосов
/ 06 февраля 2019

Этого легко достичь, используя QuickLook от Apple, так как он отлично подходит для многих расширений и коллекций изображений.

Редактирование: большая часть необходимых функций встроена в QLPreviewController

let previewController = QLPreviewController()
previewController.dataSource = self
self.present(previewController, animated: true, completion: nil)

Источником данных является любой класс, соответствующий протоколу QLPreviewControllerDataSource

Здесь - это видео-руководство Apple о том, как этого легко достичь

Редактировать: Эта часть входит в функцию previewItemAt

guard let url = Bundle.main.url(forResource: "imageName", withExtension: "jpg")
     else {
        fatalError("Could not load imageName.jpg")
     }

return url as QLPreviewItem
...