我想更改UIPopoverPresentationController
用于指向其来源的箭头的颜色。我能看到这样做的唯一方法是继承UIPopoverBackgroundView
并编写drawRect
并自己绘制popover边框和箭头。这是一种痛苦,因为默认的弹出窗口中有一些细节,比如一切都是圆角。我希望尽可能让它在平台上尽可能多地感受到它。
我是否真的必须绘制自己的弹出箭头才能改变箭头的颜色?
更新:我已尝试设置backgroundColor
的{{1}},但它似乎会改变箭头可能绘制的任何位置的颜色。我以前看过它的工作原理,但我无法确定它是什么让它起作用。查看将颜色设置为红色的屏幕截图。蓝色是弹出窗口中导航控制器的内容。它应该指向按钮。
答案 0 :(得分:9)
UIPopoverPresentationController
的{{1}}属性应该为您处理
我已多次使用此方法,并且从未在屏幕截图中看到过您的内容。您确定使用的是backgroundColor
而未在视图或容器上设置不同的背景颜色吗?下面是非居中的popover箭头的屏幕截图。视图控制器背景为绿色,popoverPresentationController.backgroundColor为红色。设置值的代码旁边显示。
我查看了您发布的项目并发现了问题(虽然我不完全确定为什么这是问题所在)。您正在popoverPresentationController.backgroundColor
下的呈现视图控制器中设置popover表示控制器的backgroundColor
属性。我怀疑在演示文稿发生后设置背景颜色如此是触发iOS 10之前的错误的原因。
如果您在展示视图控制器的viewWillAppear:
方法中设置了弹出式展示控制器的backgroundColor
,那么您还要设置onPopover:
和sourceView
属性(在实际之前)致电sourceRect
),一切正常。