(注意:我看到SO上有几个类似的问题,但是它们似乎都没有解决我想要更改自定义和系统UITabBarItems的未选择外观的特定问题。)< / p>
我在iOS7工作。我有一个带有一些按钮的UITabBar。其中一些是我的按钮,一些是系统按钮。例如:
UITabBarItem *searchButton = [[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemSearch tag: navSearchItem];
UITabBarItem *bookMkButton = [[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemBookmarks tag: navBookmarksItem];
UITabBarItem *homeButton = [[UITabBarItem alloc] initWithTitle: @"Home" image: [self tabBarImageNamed: @"home-tab"] tag: navHomeItem];
UITabBarItem *setingButton = [[UITabBarItem alloc] initWithTitle: @"Settings" image: [self tabBarImageNamed: @"settings-tab"] tag: navSettingsItem];
navTabBar.items = @[ searchButton, homeButton, bookMkButton, setingButton];
我可以轻松地设置所选按钮的色调,使用:
[[UITabBar appearance] setSelectedImageTintColor: MY_FAVORITE_COLOR];
我可以将未选中的按钮文字颜色设置为白色:
[[UITabBarItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, nil]
forState: UIControlStateNormal];
我想要做的是将 UNSELECTED 按钮的图像色调颜色设置为白色。我可以轻松地设置未选择的图像,但这仅适用于我的按钮。我也想为系统按钮执行此操作。也就是说,我想要我的搜索&amp;书签按钮也可以取消选择 - 白色。
如果我尝试重新创建自己的图标来制作自定义按钮,我很确定Apple会抱怨。这些文档非常具体,我们不应该像Apple的图标那样做任何事情。
提示?
谢谢!
编辑:我想要取消选择=白色的原因是,在我设计的背景下,默认灰色会使图标/文字在眼睛上变硬。
答案 0 :(得分:12)
我成功将自定义未选定的UITabBarItem图像设置为白色的唯一方法是使用以下(白色)图像并使用特定渲染模式加载
UIImage *tabImage = [[UIImage imageNamed:@"white_tab_item"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.tabItem.image = tabImage;
“tabItem”是类的UITabBarItem Outlet
致Aaron Brager的答案: UITabBarController unselected icon image tint
答案 1 :(得分:3)
您是否准备使用私有API?
在填充标签栏后的某个时间执行此操作:
for (UIView *v in self.tabBar.subviews)
if ([NSStringFromClass(v.class) isEqual:@"UITabBarButton"])
[v performSelector:@selector(_setUnselectedTintColor:)
withObject:[UIColor whiteColor]];
关于私有API的常见警告适用:Apple宁愿你不要这样做;如果它破了你就得保留两件;等
示例代码在App Store审核方面并不是特别隐蔽。如上所述,Apple将抓住它。添加您喜欢的隐形技术以适应。
至少适用于iOS 7.0.1和7.1。
答案 2 :(得分:2)
在iOS 10中,UITabBar公开unselectedItemTintColor
,您可以使用它来指定未选择项目的色调。有关详情,请参阅docs。
这意味着在配置标签栏时,您有以下色调选项:
tintColor
适用于所选标签unselectedItemTintColor
适用于所有未选中的标签答案 3 :(得分:0)
此代码更改选择按钮标题颜色
////为ios7定义这些代码
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")){
NSLog(@"ios77777");
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
NSForegroundColorAttributeName : [UIColor redColor]
}
forState:UIControlStateNormal];
}
答案 4 :(得分:0)
答案 5 :(得分:-4)
应该是:
[[UITabBar appearance] setTintColor:[UIColor whiteColor]]
取自:iOS自定义UI系列:TabBar&amp;导航栏:http://bit.ly/1ahr9Ao