我正在iPad应用程序中将NavigationViewController呈现为formSheet,效果很好。但是在这个展示的NavigationViewController中,当我用一个Image推送QLPreviewController来显示它时,它会自动调整其大小以适合Image。仅此一项就不成问题,但是返回到先前的QControllerQLPreviewController形式的viewController时,调整后的viewController大小会影响该NavgationViewController中的所有ViewController。
如果有任何方法可以从QLPreviewController返回到viewController的默认大小,它也会有所帮助。或者,如果QLPreviewController在按下时未调整大小。
而且此问题仅在iOS 13+中。
任何帮助将不胜感激。
最后,我自己解决了。
创建一个变量
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()
}