UIPopoverPresentationController 调暗背景更暗

UIPopoverPresentationController dimming background darker

我想要 UIPopover 的深色背景。我知道这可以通过 here 提到的 UIPopoverBackgroundView 子类化来实现,但我正在寻找任何更简单的方法来做到这一点。

P.S。 我正在使用 Objective C 而不是 Swift

最简单的方法是在显示弹出窗口之前简单地调用 self.view.alpha = 0.2,并在弹出窗口关闭时将其设置回 1.0。

UIPopover 没有后台 属性 因为它是 NSObject 的子类 没有自定义视图 属性 所以你可以改变它的内容颜色 -

 UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:TestingPC];
[[[popC contentViewController]  view] setBackgroundColor:[UIColor blackcolor]];

Swift 4

我刚遇到同样的问题并找到了类似于 jimmyjudas 的解决方案。

在 viewController 中显示为弹出窗口:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.presentingViewController?.view.alpha = 0.3
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        self.presentingViewController?.view.alpha = 1
    }

由于用户要求的是 Obj C 解决方案 - 在弹出框

中显示的 VC 中使用
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.popoverPresentationController.containerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.4];
}