3

我想更改UIPopoverPresentationController用于指向其源的箭头的颜色。我能看到的唯一方法是子类化UIPopoverBackgroundView并自己编写drawRect和绘制弹出框边框和箭头。这很痛苦,因为默认弹出窗口中没有什么细节,比如所有东西的圆角。我想尽可能地在平台上让它有宾至如归的感觉。

我真的必须绘制自己的弹出箭头才能更改箭头的颜色吗?

更新:我尝试设置 的backgroundColorUIPopoverPresentationController但它似乎改变了箭头可能绘制的任何地方的颜色。我以前见过它起作用,但我无法确定它起作用的原因。请参阅将颜色设置为红色的屏幕截图。蓝色是弹出框中导航控制器的内容。它应该指向按钮。

弹出框背景颜色问题

4

1 回答 1

10

的属性应该为你UIPopoverPresentationController处理backgroundColor

更新

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

弹出式演示控制器上的非居中箭头

更新#2

我查看了您发布的项目并发现了问题(尽管我不完全确定为什么会出现问题)。您正在呈现的视图控制器内设置弹出框呈现控制器的backgroundColor属性viewWillAppear:。我怀疑在演示发生后设置这样的背景颜色是触发 iOS 10 之前的错误的原因。

如果您backgroundColor在呈现视图控制器的onPopover:方法中设置弹出框演示控制器,并且您还设置了sourceViewandsourceRect属性(并且在您实际调用之前presentViewController:),那么一切正常。

于 2016-08-29T23:51:52.233 回答