如何设置使用淡色选择的默认 tabBarItem?
Posted
技术标签:
【中文标题】如何设置使用淡色选择的默认 tabBarItem?【英文标题】:How to set default tabBarItem selected with tint color? 【发布时间】:2016-02-29 15:26:06 【问题描述】:我在viewDidLoad
中尝试过setSelectedItem
,也尝试过selectedIndex
等。无论我在网上找到什么......但我找不到任何答案。当我启动应用程序时,每个项目都会在默认状态下显示标签栏,而不是在选定状态下。
我也收到错误
Directly tab bar cannot be modified
【问题讨论】:
请粘贴一些示例代码。 看一次可能对你有帮助***.com/questions/22767098/… 【参考方案1】:你想做这样的事情:
UIImage *item2Image = [[UIImage imageNamed:@"simulatorTabBarIconUnselected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *item2ImageSelected = [[UIImage imageNamed:@"simulatorTabBarIconSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UITabBarItem *tabBarItem2 = [[UITabBarItem alloc] initWithTitle:@"Simulator" image:item2Image selectedImage:item2ImageSelected];
将所选图像设置为 UIImageRenderingModeAlwaysTemplate 会将其着色为您的着色颜色。对于未选择的图像,无论如何,苹果都会将其默认为灰色,因此唯一的解决方法是将其设置为 UIImageRenderingModeAlwaysOriginal 并将图像资源设置为您想要的颜色。就我而言,我只是制作了原始图像的图像资产,但 alpha 为 50%,因此它看起来淡出但仍然具有相同的色调。
【讨论】:
我试过这个 UITabBarItem *tabItem = [[UITabBarItem alloc] initWithTitle:@"Discuss" image:[[UIImage imageNamed:@"u_discuss"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed: @"discuss_active"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];但仍然没有效果..帮助!! 将导航控制器的 tabBarItem 属性设置为上面的代码。您的标签栏应该包含 NavigationControllers,每个都包含视图控制器 我在视图控制器本身中添加了这个。告诉我如何添加此属性 我在视图控制器本身中为 UITabBarItem 制作了函数 - (UITabBarItem*)tabBarItem UITabBarItem *tabItem = [[UITabBarItem alloc] initWithTitle:@"Discuss" image:[[UIImage imageNamed:@" u_discuss"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"discuss_active"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];返回标签项; 我只知道如何按照我描述的方式进行操作。如果你有一个标签栏控制器,你应该让它的视图控制器成为导航控制器。这些导航控制器将包含您要显示的每个视图控制器,并且导航控制器将具有 tabBarItem 属性。视图控制器将没有 tabBarItem 属性【参考方案2】: let accountBoard = UIStoryboard(name: "Account", bundle: nil)
let accountNav = accountBoard.instantiateInitialViewController() as! CommonNavigationController
accountNav.tabBarItem = UITabBarItem(title: "Account", image: UIImage(named: "icon - account")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), selectedImage: UIImage(named: "icon - account - white")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal))
accountNav.tabBarItem.setTitleTextAttributes([NSFontAttributeName: STYLES.avenirNextDemiBold11!,NSForegroundColorAttributeName: UIColor.whiteColor()], forState: .Normal)
accountNav.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState:UIControlState.Selected)
您可以以编程方式更改已选-未选项目的颜色属性。
【讨论】:
以上是关于如何设置使用淡色选择的默认 tabBarItem?的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS 7中更改tabBarItems的文本和图标颜色?
如何获得 UISlider 的默认 maximumTrackTintColor