我正在尝试更改我的自定义标签栏的标签栏项目的图标颜色,
但是setSelectedImageTintColor
和setTintColor
不能一起工作。
如果编码顺序是
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
[[UITabBar appearance] setTintColor:[UIColor redColor]];
则输出为
如果代码顺序是
[[UITabBar appearance] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
则输出为
我在didFinishLaunchingWithOptions
方法中使用了以下代码,前两行工作正常,问题出在最后两行
//To set color for unselected tab bar item's title color
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor redColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
//To set color for selected tab bar item's title color
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor greenColor], NSForegroundColorAttributeName,nil] forState:UIControlStateSelected];
//To set color for unselected icons
[[UITabBar appearance] setTintColor:[UIColor redColor]];
//To set color for selected icons
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
**注意-**我有单独的自定义标签栏类,但我不会更改自定义标签栏类中的图标颜色
谢谢期待。
2条答案
按热度按时间klr1opcd1#
首先,
selectedImageTintColor
从iOS 8.0开始就被弃用了。我设法实现您想要的唯一方法是为选定和未选定状态设置单独的图像,并分别使用
UITabBbarItem
的selectedImage
和image
属性。**重要提示:**默认情况下,这两个图像属性都渲染为“模板”,这意味着它们是从源图像中的alpha值创建的,因此将从tabBar的tintColor获取它们的颜色。
为了防止这种情况,请提供带有
UIImageRenderingModeAlwaysOriginal
的图像。因此,为了得到你想要的,你需要有两个版本的所有选项卡图像,一个红色(用于未选中状态)和一个绿色(用于选中状态),然后这样做:
示例(swift):
示例(目标-c):
8e2ybdfx2#
Apple documentation说明您可以使用tintColor属性。