Ios 增加preferredContentSize后,UIPopoverPresentationController设置增长动画时出现白色矩形瑕疵

Ios 增加preferredContentSize后,UIPopoverPresentationController设置增长动画时出现白色矩形瑕疵,ios,swift,xcode,autolayout,uikit,Ios,Swift,Xcode,Autolayout,Uikit,我正在使用UIPopoverPresentationViewController在popover中以模式呈现UIViewController。根据,更新UIViewController上的preferredContentSize属性(在弹出窗口中显示)将设置大小更改的动画 当大小更改生效时,preferredContentSize的某些值将在动画期间导致此奇怪的白色矩形伪影。除了这个奇怪的白色矩形外,动画效果非常好 这是我用来展示我的popover的代码。在本例中,preferredConte

我正在使用
UIPopoverPresentationViewController
在popover中以模式呈现
UIViewController
。根据,更新
UIViewController
上的
preferredContentSize
属性(在弹出窗口中显示)将设置大小更改的动画

当大小更改生效时,
preferredContentSize
的某些值将在动画期间导致此奇怪的白色矩形伪影。除了这个奇怪的白色矩形外,动画效果非常好

这是我用来展示我的popover的代码。在本例中,
preferredContentSize
设置为
CGSize(宽度:200,高度:100)
会导致工件出现。如果我使用
CGSize(宽度:200,高度:200)
所有东西都可以完美地工作,没有伪影

@objc private func presentPopover() {
    let vc = UIViewController()

    vc.modalPresentationStyle = .popover
    vc.preferredContentSize = CGSize(width: 200, height: 50)

    guard let popVC = vc.presentationController as? UIPopoverPresentationController else {
        fatalError("View Controller must have a Popover Presentation Controller")
    }

    popVC.sourceView = self.view
    popVC.sourceRect = self.label.frame
    popVC.delegate = self
    popVC.permittedArrowDirections = .up

    self.present(vc, animated: true)

    // very short delay to allow popover growth to animate
    // without delay, layout happens so quickly that no animation is visible
    Timer.scheduledTimer(withTimeInterval: 0.15, repeats: false) { (timer) in
        vc.preferredContentSize = CGSize(width: 200, height: self.popoverHeight)
    }
}

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
    return .none
}

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
    return .none
}
在出现的工件和
preferredContentSize
之间似乎存在某种关系,但我无法解释这种关系是什么


我已尝试将
计时器
安排在未来0.1秒(例如1秒、5秒)之后,认为可能存在一些布局争用情况,但这并没有解决问题。如果没有
计时器
,则POPOR将自动显示在最终的
首选内容大小
,而无需设置动画。我认为这是因为布局发生得太快了。使用另一个延迟构造,例如
DispatchQueue.main.asyncAfter(截止日期:execute:)
也会导致出现白色矩形工件。

嘿,您是如何解决此问题的?嘿,您是如何解决此问题的?