停止 QLPreviewController 在呈现的视图控制器中调整大小
Posted
技术标签:
【中文标题】停止 QLPreviewController 在呈现的视图控制器中调整大小【英文标题】:Stop QLPreviewController from resizing in presented View Controller 【发布时间】:2020-06-03 06:43:44 【问题描述】:我在 iPad 应用程序中将 NavigationViewController 呈现为 formSheet,效果很好。但是在这个呈现的 NavigationViewController 中,当我用一个图像推送 QLPreviewController 以显示它时,它会自行调整大小以适应图像。仅此一项不会有问题,但在返回到以前的 viewController 表单 QLPreviewController 时,调整后的 viewController 大小会影响该 NavgationViewController 中的所有 ViewController。
如果有任何方法可以在从 QLPreviewController 返回时恢复 viewController 的默认大小,那也会有所帮助。或者如果 QLPreviewController 在推送时没有调整大小。
此问题仅在 ios 13+ 中。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:最后,我自己解决了。
创建一个变量
var defaultPreferredContentSize: CGSize?
一种方法
fileprivate func adjustViewControllerSizeIfNeeded()
if let size = defaultPreferredContentSize
if self.navigationController?.preferredContentSize != size
self.navigationController?.preferredContentSize = size
else
defaultPreferredContentSize = self.view.frame.size
在 viewDidAppear 中调用该方法
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
adjustViewControllerSizeIfNeeded()
【讨论】:
以上是关于停止 QLPreviewController 在呈现的视图控制器中调整大小的主要内容,如果未能解决你的问题,请参考以下文章
在 QLPreviewController 中更改导航栏颜色
以 Core Data 为数据源的 QLPreviewController
iOS7 QLPreviewController 改变导航栏颜色?