没有叠加的UIPopoverPresentationController

时间:2018-01-23 10:32:38

标签: swift uipopoverpresentationcontroller

我正在使用UIPopoverPresentationController实现一个弹出窗口视图。

enter image description here

问题在于,默认情况下,控制器有一个半径较大的阴影。

我想禁用它 - 叠加层。

我试过了:

  1. 自定义布局阴影(使用UIPopoverBackgroundView):

    layer.shadowColor = UIColor.white.withAlphaComponent(0.01).cgColor
    layer.shadowOffset = .zero
    layer.shadowRadius = 0
    
  2. 在视图调试中 - 我可以在弹出的4个图像视图后面看到灰色渐变背景:

  3. enter image description here

    我确信这是默认行为,显示弹出框后面的叠加层。

    如何禁用此功能?

    我找到了thisthis。但那些没有帮助。

1 个答案:

答案 0 :(得分:1)

如果仔细查看视图层次结构,您会注意到阴影层_UIMirrorNinePatchView是UITransitionView的子层,与UIPopoverView相同 - 两者都在同一级别上。

views hierarchy picture

在这种情况下,您可以尝试隐藏此子图层:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    if let shadowLayer = UIApplication.shared.windows.first?.layer.sublayers?[1].sublayers?[1] {
        shadowLayer.isHidden = true
    }
}

确保在viewDidLayoutSubviews中隐藏它,以避免与丢失的子图层或子图层闪烁相关的异常。