有没有一种方法可以简单地改变iOS8上的UIPopoverView背景颜色(包括箭头)?
(我确实读过几篇关于定制"UIPopoverControllers“的文章。这也适用于这里吗,这意味着答案是“不”?)
这难道不是我应该在触发popover的prepareForSegue方法中解决的问题吗?如何才能到达相应的视图以更改其外观?
发布于 2014-09-11 06:23:24
我找到了解决方案。对于iOS8,子类化不再是必需的!可以从tableview ->导航-> popoverPresentationController中访问和更改背景
self.navigationController?.popoverPresentationController?.backgroundColor = UIColor.redColor()
有关这方面的更多信息,请参阅WWDC session 2014。
发布于 2016-06-01 17:08:21
您可以像这样简单地修改popover:
let popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("popoverSegue")
popoverViewController!.popoverPresentationController?.delegate = self
popoverViewController!.modalPresentationStyle = .Popover
let popoverSize = CGSize(width: 150, height: 60)
popoverViewController!.preferredContentSize = popoverSize
let popover = popoverViewController!.popoverPresentationController
popover?.delegate = self
popover?.permittedArrowDirections = .Up
popover?.sourceView = self.view
//change background color with arrow too!
popover?.backgroundColor = UIColor.whiteColor()
popover?.sourceRect = CGRect(x: self.view.frame.width, y: -10, width: 0, height: 0)
presentViewController(popoverViewController!, animated: true, completion: nil)
发布于 2019-12-14 00:55:12
在iOS13中,popoverPresentationController.backgroundColor似乎不再有效。
弹出箭头现在显示为弹出视图控制器的view.backgroundColor的颜色。
下面是演示的完整代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let sourceButton = sender as? UIButton, let popover = segue.destination.popoverPresentationController {
popover.sourceView = sourceButton.superview
popover.sourceRect = sourceButton.frame
popover.permittedArrowDirections = [.left]
popover.delegate = self
segue.destination.preferredContentSize = CGSize(width: 100, height: 100)
//popover.backgroundColor = sourceButton.tintColor //old way
segue.destination.view.backgroundColor = sourceButton.tintColor //new way
}
}
@IBAction func btnTap(_ sender: Any) {
performSegue(withIdentifier: "popoverSegue", sender: sender)
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
https://stackoverflow.com/questions/25403258
复制相似问题