Ios 旋转时自动更新preferredContentSize

Ios 旋转时自动更新preferredContentSize,ios,swift,rotation,ios-app-extension,Ios,Swift,Rotation,Ios App Extension,我正在寻找一种方法来强制执行UIPopoverPresentationController自动调整大小,以填充大部分屏幕,比如减去50个填充单位 我首先尝试在viewDidLoad中设置preferredContentSize,然后检测何时发生旋转,并将CGSize更新为我可以计算的新大小。但出于某种原因,这在我的环境中不起作用。我使用的是UIDeviceOrientationIDChangeNotification,它通常会调用该方法,但在照片编辑扩展中存在popover时不会调用该方法 我想

我正在寻找一种方法来强制执行
UIPopoverPresentationController
自动调整大小,以填充大部分屏幕,比如减去50个填充单位

我首先尝试在
viewDidLoad
中设置
preferredContentSize
,然后检测何时发生旋转,并将
CGSize
更新为我可以计算的新大小。但出于某种原因,这在我的环境中不起作用。我使用的是
UIDeviceOrientationIDChangeNotification
,它通常会调用该方法,但在照片编辑扩展中存在popover时不会调用该方法

我想知道除了在检测到大小更改后手动更新
preferredContentSize
之外,是否还有其他方法可以更改popover的大小?如果没有,是否有一种方法可以在此上下文中检测此popover中的旋转?

尝试以下操作:

func isLandscape() -> Bool {
// your logical here
}

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        let myNewSize = isLandscape() ? mySizeLandscape : mySizePortrait
        self.preferredContentSize = myNewSize
        super.viewWillTransition(to: myNewSize, with: coordinator)
}