是否可以自定义 UIMenuController 的颜色?
Posted
技术标签:
【中文标题】是否可以自定义 UIMenuController 的颜色?【英文标题】:Is it possible to customize the color of a UIMenuController? 【发布时间】:2011-03-29 00:24:53 【问题描述】:默认背景颜色为黑色。如何更改颜色,类似于导航栏的tintColor
?
【问题讨论】:
【参考方案1】:更改文本颜色 的一种可能解决方案是在 UIMenuController 中使用 UIButton 的外观代理。问题是它直接使用了 Apple 在菜单控制器中使用的私有 UIButton 子类。我永远不会建议访问私有 Apple 类(以及通过它的名称),但在那个特定的菜单控制器颜色自定义案例中,我认为这是最好的解决方案。它可以让您定义视图外观的简洁方式。
斯威夫特
(NSClassFromString("UICalloutBarButton")! as! UIButton.Type).appearance().setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
Objective-C
[[NSClassFromString(@"UICalloutBarButton") appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
【讨论】:
有没有人在通过 App Store Review 时使用过这个? @shallowThought 是的,它通过了【参考方案2】:我很确定这是不可能的。如果您将其子类化,您也许可以解决一些问题。
编辑:我查看了 UIMenuController.h 文件,似乎没有任何明显的方法可以更改颜色。如果对您有帮助,它是 NSObject 的子类。此外,如果您查看人们如何将 UITabBarController 子类化以更改其颜色,您可能会找到类似的解决方案。
【讨论】:
这是一个单例,只返回sharedMenuController
,所以我不能继承它。不过还是谢谢你的回答!
这没什么用,但是你可以使用 UIAppearance 来改变 UIButton 的背景颜色。从那里圆角消失了。我认为如果图层发生更改,这可能是可修改的,但我看不到访问它的方法。【参考方案3】:
你可以像这样设置 UIMenuController 的背景颜色 -
Objective-C
[[NSClassFromString(@"UICalloutBarButton") appearance] setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.8]];
确保您使用具有透明度/alpha 的颜色,否则会引发错误。
【讨论】:
以上是关于是否可以自定义 UIMenuController 的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义 UIMenuController 项从 UIPasteboard 中复制和检索值