如何设置UITabBarItem的未选定色调,***包括系统项***(IOS 7)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (6)
  • 关注 (0)
  • 查看 (196)

我在iOS 7工作。我有一个带有按钮的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按钮的图像色调设置为白色。 我可以很容易地设置未选中的图像,但只适用于我的按钮。 我也想为系统按钮做这个。 也就是说,我希望我的搜索和书签按钮也是未选中的白色。

我很肯定,如果我尝试重新创建自定义按钮的图标,苹果会抱怨。 文档非常具体,我们不应该做任何与苹果图标类似的东西。

提问于
用户回答回答于
用户回答回答于

如果使用的是Storyboard,也可以同时设置这两个ImageBar ItemSelected ImageSelected Bar Item获取未更改的图像tabBar...

用户回答回答于

此代码可更改“选择”按钮标题颜色。

///为iOS 7定义这些代码

  #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];

    }
用户回答回答于

在IOS 10中,UITabBar公开unselectedItemTintColor用于指定未选定项的色调。见文档

这意味着在配置制表符栏时,有以下tint选项:

  • tintColor应用于选定的选项卡
  • unselectedItemTintColor适用于所有未选定的选项卡。
用户回答回答于

在填充制表符栏之后执行此操作:

for (UIView *v in self.tabBar.subviews)
  if ([NSStringFromClass(v.class) isEqual:@"UITabBarButton"])
    [v performSelector:@selector(_setUnselectedTintColor:)
              withObject:[UIColor whiteColor]];

至少在iOS 7.0.1和7.1上工作。

用户回答回答于

我成功地设置了一个自定义未选择的UITabBarItem图像“白色”是通过使用以下(白色)图像并以特定的呈现模式加载它来实现的

UIImage *tabImage = [[UIImage imageNamed:@"white_tab_item"] 
                      imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.tabItem.image = tabImage;

“tabitem”是类的UITabBarItem出口

扫码关注云+社区

领取腾讯云代金券