当 PageSheet 设置动画时,UINavigationBar 会渗出背景

UINavigationBar bleeding its background when PageSheet is animating

我的应用程序有一个 UIViewController,其中使用 iOS 13 上引入的新 .pageSheet 模态表示样式。 这个 UIViewController 在顶部有一个 UINavigationBar 并且它被约束固定在顶部,前导和尾随。

我注意到当 UIViewController 正在动画时,此视图的背景会变成白色。在真实设备上查看录制的 GIF:

有什么办法可以解决这个问题吗? UIViewControllerUINavigationBar 是通过编程方式创建的。

也许这样做可以解决问题?

override func layoutSubviews() {
    super.layoutSubviews()
    var originalFrame = frame
    frame = originalFrame
}

我正在使用 Swift 5.1 和 Xcode 11.3。 iPhone 是 运行 iOS 13.1.3.

可能您将视图的图层设置为光栅化,这导致 .pageSheet 动画无法正确绘制。

解决办法,去掉下面的代码:

navigationBar.layer.shouldRasterize = true
navigationBar.layer.rasterizationScale = UIScreen.main.scale