【发布时间】:2015-07-24 05:47:23
【问题描述】:
我想要UIPopover 的背景颜色较暗。我知道这可以通过子类化UIPopoverBackgroundView 来实现,正如here 所提到的,但我正在寻找任何更简单的方法来做到这一点。
附: 我使用的是 Objective C 而不是 Swift。
【问题讨论】:
标签: objective-c xcode ios8 uipopovercontroller
我想要UIPopover 的背景颜色较暗。我知道这可以通过子类化UIPopoverBackgroundView 来实现,正如here 所提到的,但我正在寻找任何更简单的方法来做到这一点。
附: 我使用的是 Objective C 而不是 Swift。
【问题讨论】:
标签: objective-c xcode ios8 uipopovercontroller
斯威夫特 4
我刚刚遇到同样的问题,并找到了类似于 jimmyjudas 的解决方案。
在viewController中显示为popover:
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
}
【讨论】:
最简单的方法是在显示弹出框之前调用self.view.alpha = 0.2,并在弹出框关闭时将其设置回 1.0。
【讨论】:
UIApplication.SharedApplication.KeyWindow.RootViewController.View.Alpha = 0.5f 并在此过程中检查了一些空值。)
由于用户要求 Obj C 解决方案 - 在弹出窗口中显示的 VC 中使用
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.popoverPresentationController.containerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.4];
}
【讨论】:
UIPopover 没有背景属性,因为它是 NSObject 的子类 没有自定义视图属性 所以你可以改变它的内容颜色 -
UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:TestingPC];
[[[popC contentViewController] view] setBackgroundColor:[UIColor blackcolor]];
【讨论】: