Ber*_*rnd 28 uiview ios uipopoverbackgroundview swift ios8
有没有办法在iOS8 上简单地更改UIPopoverView背景颜色(包括它的箭头)?
(我确实阅读了几篇关于自定义"UIPopoverControllers"的文章.这是否也适用于此,意味着答案是"不"?)

这不是我应该能够在prepareForSegue方法中触发弹出窗口的东西吗?我怎样才能达到相应的视图来改变它的外观?
Ber*_*rnd 57
我找到了解决方案.使用iOS8不再需要子类化!可以在tableview - > navigation - > popoverPresentationController中访问和更改背景
self.navigationController?.popoverPresentationController?.backgroundColor = UIColor.redColor()
Run Code Online (Sandbox Code Playgroud)
有关此内容的更多信息,请参见WWDC会话214.
Dan*_*uta 10
您可以像这样修改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)
Run Code Online (Sandbox Code Playgroud)
似乎 popoverPresentationController.backgroundColor 在 iOS13 中不再起作用。
弹出窗口箭头现在看起来采用弹出窗口 viewController 的 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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13812 次 |
| 最近记录: |