如何在不绘制自己的情况下更改UIPopoverPresentationController的箭头颜色

Tom*_*ing 3 uipopovercontroller ios uipopoverbackgroundview

我想更改UIPopoverPresentationController用于指向其源的箭头的颜色.我能看到这样做的唯一方法是自己子类化UIPopoverBackgroundView并编写drawRect和绘制popover边框和箭头.这是一种痛苦,因为默认的弹出窗口中有一些细节,比如一切都是圆角.而且我希望尽可能让它在平台上感受到家的感觉.

我是否真的必须绘制自己的弹出箭头才能改变箭头的颜色?

更新:我试过设置backgroundColorUIPopoverPresentationController,但它似乎改变无处不在的箭头可能绘制颜色.我以前看过它的工作原理,但我无法确定是什么让它起作用.查看将颜色设置为红色的屏幕截图.蓝色是弹出窗口中导航控制器的内容.它应该指向按钮.

Popover背景颜色问题

Dan*_*all 10

UIPopoverPresentationControllerbackgroundColor财产应处理为你

更新

我已经多次使用过这种方法,但从未见过截图中的内容.您确定要使用popoverPresentationController.backgroundColor而不是在视图或容器上设置不同的背景颜色吗?下面是非居中的popover箭头的屏幕截图.视图控制器背景为绿色,popoverPresentationController.backgroundColor为红色.旁边显示设置值的代码.

弹出窗口控制器上的非居中箭头

更新#2

我看了你发布的项目,发现了问题(虽然我不完全确定为什么会出现这个问题).您正在所backgroundColor提供的视图控制器中设置弹出窗口控制器的属性viewWillAppear:.我怀疑在演示发生设置这样的背景颜色是触发iOS 10之前的错误的原因.

如果您backgroundColor在呈现视图控制器的onPopover:方法中设置弹出窗口控制器控件,您也在设置sourceViewsourceRect属性(在实际调用之前presentViewController:),一切正常.