自定义iOS UINavigationBar / UITabBar并删除色调颜色

时间:2014-01-30 11:34:46

标签: ios uinavigationbar customization uitabbar tintcolor

我正处于一个需要同时创建自定义UINavigationBarUITabBar的项目中。 我的问题在于物品的颜色(浅色!)。 我不希望我的物品有任何色彩。我试图用它来清除颜色,但这只会让它消失(变得透明)。

所以,总结一下,我有自己的酒吧项目图片,每个都包含自己的特定颜色。我已经读过,为了做我想做的事情,我必须继承我的UIBar,但我没有比这更多的信息。我应该在子类中修改什么来摆脱那种色彩约束?谢谢。

编辑: 色调颜色不应用于项目,而是应用于条形图(所以所有项目)。所以我的问题是我需要特定颜色的物品

编辑2: 好的,我想我明白了!解决方案是使用UIBarButtonItem方法:initWithCustomView:

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
backBtn.bounds = CGRectMake( 0, 0, 26, 26);
[backBtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal];
[backBtn addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
self.navigationItem.leftBarButtonItem = item;

但这仅适用于UINavigationBar,因为它需要UIBarButtonItem。另一方面,UITabBar只需UITabBarItem,但不符合initWithCustomView。所以我还在那里腌制......

2 个答案:

答案 0 :(得分:5)

前一段时间问了这个问题,但是我在google中发现了这个问题,所以其他人也可能会发现它:)

答案是使用这种方法 UITabBarItem(title:, image:, selectedImage:)

图像打开始终原始渲染模式

image.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

希望有所帮助!

答案 1 :(得分:3)

好的,我想我明白了!解决方案是使用UIBarButtonItem方法:initWithCustomView:

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
backBtn.bounds = CGRectMake( 0, 0, 26, 26);
[backBtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal];
[backBtn addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
self.navigationItem.leftBarButtonItem = item;

但这仅适用于UINavigationBar,因为它需要UIBarButtonItem。另一方面,UITabBar只需UITabBarItem,但不符合initWithCustomView。所以我还在那里腌制......