如何实现Apple Photos的全屏图像和关闭图像功能?另外,如何获得图像的宽高比以适合全屏视图?他们会将UIImage发送到新的视图控制器吗?
我目前全屏显示图像的方法只是将UINavigationBar和UITabBar的Alpha设置为0,而将UIImageView的框架设置为与超级视图的框架相等。为了消除这种情况,我添加了一个点击手势识别器,可以反转Alpha并删除UIImageView从superview。
这是我的全屏显示并关闭代码
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
}
答案 0 :(得分:1)
这可以使用Apple的QuickLook框架轻松实现,因为它适用于许多扩展名和图像集合。
编辑:您想要的大多数功能都内置在QLPreviewController
let previewController = QLPreviewController()
previewController.dataSource = self
self.present(previewController, animated: true, completion: nil)
数据源是符合QLPreviewControllerDataSource
协议的任何类
Here是Apple提供的有关如何轻松实现此目标的视频指南
编辑:这部分进入previewItemAt
函数
guard let url = Bundle.main.url(forResource: "imageName", withExtension: "jpg")
else {
fatalError("Could not load imageName.jpg")
}
return url as QLPreviewItem