删除 UIPopoverPresentationController 后面的调光视图

问题描述 投票:0回答:2

我正在尝试删除使用 UIPopoverPresentationController 呈现的弹出窗口后面的变暗视图。我已经实现了一个自定义的 UIPopoverBackgroundView,但似乎没有办法摆脱这个变暗的视图。

我已经使用视图层次结构检查器将调光视图跟踪到“_UIMirrorNinePatchView”,但是除了爬行 UIWindow 的子视图并手动从其超级视图中删除该视图之外,没有什么好的方法可以将其删除。这种方法是有缺陷的,因为它会在删除之前短暂闪烁变暗视图。

有什么建议吗?

ios uipopovercontroller
2个回答
0
投票

如果有人仍然需要,我的解决方法(就像我自己尝试在 popupVC 中实现自定义模糊):

class SomeViewController: UIViewController { 
private let blurEffect = UIBlurEffect(style: .systemUltraThinMaterialDark)
override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .clear

    let blurView = UIVisualEffectView(effect: blurEffect)
    blurView.frame = view.bounds
    view.addSubview(blurView)
}
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    popoverPresentationController?.containerView?.removeAllBluresExept(customBlure: blurEffect)
}} 
private extension UIView {
func removeAllBluresExept(customBlure: UIBlurEffect) {
    subviews.forEach {
        if let visualEffectView = $0 as? UIVisualEffectView,
           visualEffectView.effect is UIBlurEffect, visualEffectView.effect != customBlure {
            // System Apple white blure view heeds to hide
            $0.isHidden = true
        }
        if !$0.subviews.isEmpty {
            $0.removeAllBluresExept(customBlure: customBlure)
        }
    }
}

}


-1
投票

backgroundColor
属性设置为
.clear

popOverPresentationController.backgroundColor = .clear

© www.soinside.com 2019 - 2024. All rights reserved.