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

3
我正在一个项目中,需要创建自定义的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 的要求。所以我还在困境中...


我不明白,去除颜色不就是透明吗?你可以尝试使用whiteColor。 - Woodstock
1
无透明度意味着色调颜色将是透明的,因此形成图像的内容(线条)将变为透明。换句话说,图像将变为透明(因此即使图像存在,也不会出现任何东西)。 - Plot
2个回答

6

这个问题之前已经被问过一段时间了,但我在谷歌上找到了它,所以其他人也可能会发现它 :)

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

通过打开始终使用原始渲染模式的图像

image.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

希望这能帮到你!


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的要求。所以我还在困境中...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接