如何在不绘制自己的情况下更改 UIPopoverPresentationController 箭头颜色
How to change UIPopoverPresentationController's arrow color without drawing my own
我想更改 UIPopoverPresentationController
用来指向源头的箭头的颜色。我能看到的唯一方法是继承 UIPopoverBackgroundView
并编写 drawRect
并自己绘制弹出框边框和箭头。这很痛苦,因为在默认的弹出窗口中几乎没有什么细节,比如所有东西都有圆角。我想让它在平台上尽可能有宾至如归的感觉。
我真的必须自己绘制弹出框箭头才能更改箭头的颜色吗?
更新: 我试过设置 UIPopoverPresentationController
的 backgroundColor
,但它似乎改变了箭头可能绘制的所有地方的颜色。我以前见过它起作用,但我无法确定它起作用的原因。请参阅将颜色设置为红色的屏幕截图。蓝色是弹出窗口中导航控制器的内容。它应该指向按钮。
UIPopoverPresentationController
的 backgroundColor
属性 应该会为您处理这个问题
更新
我已经多次使用这种方法,但从未在屏幕截图中看到过。您确定您使用的是 popoverPresentationController.backgroundColor
而不是在视图或容器上设置不同的背景颜色吗?下面是非居中弹出箭头的屏幕截图。视图控制器背景为绿色,popoverPresentationController.backgroundColor 为红色。显示在设置值的代码旁边。
更新 #2
我查看了您发布的项目并发现了问题(尽管我不完全确定为什么就是问题所在)。您正在 viewWillAppear:
下的呈现视图控制器中设置弹出框呈现控制器的 backgroundColor
属性。我怀疑在 之后 设置背景颜色是触发 iOS 10.
之前的错误的原因
如果您在呈现视图控制器的 onPopover:
方法中设置弹出框呈现控制器的 backgroundColor
,您还设置了 sourceView
和 sourceRect
属性(以及之前你实际上调用了 presentViewController:
),一切正常。
我想更改 UIPopoverPresentationController
用来指向源头的箭头的颜色。我能看到的唯一方法是继承 UIPopoverBackgroundView
并编写 drawRect
并自己绘制弹出框边框和箭头。这很痛苦,因为在默认的弹出窗口中几乎没有什么细节,比如所有东西都有圆角。我想让它在平台上尽可能有宾至如归的感觉。
我真的必须自己绘制弹出框箭头才能更改箭头的颜色吗?
更新: 我试过设置 UIPopoverPresentationController
的 backgroundColor
,但它似乎改变了箭头可能绘制的所有地方的颜色。我以前见过它起作用,但我无法确定它起作用的原因。请参阅将颜色设置为红色的屏幕截图。蓝色是弹出窗口中导航控制器的内容。它应该指向按钮。
UIPopoverPresentationController
的 backgroundColor
属性 应该会为您处理这个问题
更新
我已经多次使用这种方法,但从未在屏幕截图中看到过。您确定您使用的是 popoverPresentationController.backgroundColor
而不是在视图或容器上设置不同的背景颜色吗?下面是非居中弹出箭头的屏幕截图。视图控制器背景为绿色,popoverPresentationController.backgroundColor 为红色。显示在设置值的代码旁边。
更新 #2
我查看了您发布的项目并发现了问题(尽管我不完全确定为什么就是问题所在)。您正在 viewWillAppear:
下的呈现视图控制器中设置弹出框呈现控制器的 backgroundColor
属性。我怀疑在 之后 设置背景颜色是触发 iOS 10.
如果您在呈现视图控制器的 onPopover:
方法中设置弹出框呈现控制器的 backgroundColor
,您还设置了 sourceView
和 sourceRect
属性(以及之前你实际上调用了 presentViewController:
),一切正常。