的UIBarButtonItem高亮颜色

问题描述 投票:6回答:2

我已经为一个UINavigationBar(一个UINavigationController内),这反过来,设置了被插入到所述UIBarButtonItems UINavigationBar适当匹配的颜色的自定义色调颜色。然而,当我选择UIBarButtonItem按钮变成(大概)高亮显示状态,并呈现出不同的颜色,看上去颇有几分出来,不能很好地匹配着色颜色。有没有办法来改变这种聚焦状态颜色自定义颜色?

理想情况下,我想刚才创建UIBarButtonItem一个类别,它改变了高亮颜色UIBarButtonItem的所有实例,因为这将避免需要明确的子类UIBarButtonItems,然后在我的应用程序使用的子类(这将是棘手的改变每参考,因为我使用了一些刚刚使用UIBarButtonItem第三方库,我不想去与他们实现搞乱)。

任何帮助将不胜感激。

iphone cocoa-touch uikit uinavigationbar uibarbuttonitem
2个回答
0
投票

从我从面临着类似的问题还记得,UINavigationBar的将只是采取tintColor并使其更暗了的UIBarButtonItem(除非样式设置为BarStyleBlack,在这种情况下,它使一个沉闷的灰色)。

要做到你的要求,我会创建一个背景图片自定义的UIButton为匹配您的配色方案,不同的控制状态,然后使用此作为的UIButton一个自定义的UIBarButtonItem的看法。

UIButton *customButton = [UIButton buttonWithType:...];

//normal_button.png and selected_button.png need to be created by you
[customButton setBackgroundImage: [UIImage imageNamed:@"normal_button.png"] forState:UIControlStateNormal];
[customButton setBackgroundImage: [UIImage imageNamed:@"selected_button.png"] forState:UIControlStateSelected];

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView: customButton];

如果您想尝试封装这个,你总是可以创建一个工厂或一个的UIBarButtonItem自定义的init方法(通过一个类别),并使用上面的代码(略有修改)。

我知道,我不能完全解决上只是一个类别重写控制状态的第二个点。我不知道的UIBarButtonItem重写做这样的事情是什么方法,但你可以做到你想要的东西通过方法混写(http://cocoadev.com/index.pl?MethodSwizzling)一旦你找出哪些要交换的方法。

我要指出,我只用过混写测试/调试。


0
投票

如果您使用界面生成器,拖放一个UIButton的导航的栏右侧,它作为一个右侧导航栏按钮项目得到英寸那么,对于按钮的不同状态配置不同的色调,就大功告成了。工作在Xcode 10和夫特4。

© www.soinside.com 2019 - 2024. All rights reserved.