停止 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 改变导航栏颜色?

在 QLPreviewController 中禁用复制操作

SwiftUI 中的 QLPreviewController 缺少导航栏

QLPreviewController 在其上显示模态视图控制器后失去联系