1

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

在此处输入图像描述

这样做的问题是,默认情况下,我有一个用于控制器的大半径阴影。

我想禁用它 - 覆盖。

我努力了:

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

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

在此处输入图像描述

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

如何禁用此功能?

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

4

1 回答 1

1

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

视图层次结构图片

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

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

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

确保将其隐藏在 viewDidLayoutSubviews 中,以避免与缺少子图层或子图层闪烁相关的异常。

于 2018-01-30T17:22:32.207 回答