首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更改UIPopoverView背景+箭头颜色

更改UIPopoverView背景+箭头颜色
EN

Stack Overflow用户
提问于 2014-08-20 19:12:50
回答 5查看 17.4K关注 0票数 33

有没有一种方法可以简单地改变iOS8上的UIPopoverView背景颜色(包括箭头)?

(我确实读过几篇关于定制"UIPopoverControllers“的文章。这也适用于这里吗,这意味着答案是“不”?)

这难道不是我应该在触发popover的prepareForSegue方法中解决的问题吗?如何才能到达相应的视图以更改其外观?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-11 06:23:24

我找到了解决方案。对于iOS8,子类化不再是必需的!可以从tableview ->导航-> popoverPresentationController中访问和更改背景

代码语言:javascript
复制
    self.navigationController?.popoverPresentationController?.backgroundColor = UIColor.redColor()

有关这方面的更多信息,请参阅WWDC session 2014。

票数 60
EN

Stack Overflow用户

发布于 2016-06-01 17:08:21

您可以像这样简单地修改popover:

代码语言:javascript
复制
    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)
票数 10
EN

Stack Overflow用户

发布于 2019-12-14 00:55:12

在iOS13中,popoverPresentationController.backgroundColor似乎不再有效。

弹出箭头现在显示为弹出视图控制器的view.backgroundColor的颜色。

下面是演示的完整代码:

代码语言:javascript
复制
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
}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25403258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档