在视图加载之前设置UITabBarItem属性?

时间:2013-12-30 20:08:18

标签: ios objective-c

我正在尝试更改UITabBar标题的颜色。

我在每个视图控制器'viewDidLoad中都有这段代码:

[self.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName : 
      [UIColor whiteColor]} forState:UIControlStateSelected];
[self.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName : 
      [UIColor whiteColor]} forState:UIControlStateNormal];

仅在视图加载后颜色从默认值更改时,这只有一半 - 因此,在标签栏项目被轻敲至少一次之后。这不是我正在寻找的行为,我想在应用程序启动后立即设置颜色。

将代码置于视图控制器“initWithNibName:中根本不起作用。

我有什么方法可以从应用代表的tabBarItem处理didFinishLaunchingWithOptions

更新

我在下面标记为正确的答案有效,但我也找到了另一种方法,如果你想解决个别UITabBarItem问题,这种方法会更好。从标签栏控制器中,通过从Interface Builder创建出口或以编程方式将标签栏分配给指针后,您可以像这样查找单个tabBarItem(对于{{指向的UITabBar) 1}}):

tabBar

等...

然后你可以做像

这样的事情
UITabBarItem *tab1 = [self.tabBar.items objectAtIndex: 0];
UITabBarItem *tab2 = [self.tabBar.items objectAtIndex: 1];

以及各种其他东西。

2 个答案:

答案 0 :(得分:1)

了解UIAppearance。 https://developer.apple.com/library/iOS/documentation/UIKit/Reference/UIAppearance_Protocol/Reference/Reference.html

创建一个实用程序类,以便为标签栏和导航栏显示所需的外观。然后从App Delegate的didFinishLaunchingWithOptions中调用该类。这是一个让你入门的例子:

+ (void) setUpTabBarAppearance
{
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Your Font" size:15], UITextAttributeFont, [UIColor whiteColor], UITextAttributeTextColor, [UIColor clearColor], UITextAttributeTextShadowColor, nil] forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:@{ UITextAttributeTextColor : [UIColor greenColor] }forState:UIControlStateSelected];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
}

然后从您的app委托的didFinishLaunchingWithOptions中调用:[utility setUpTabBarAppearance]; 此外,通过这种方式,您只需修改一次TabBar的外观,而不是每一个类都修改。

答案 1 :(得分:0)

我的AppDelegate中有以下内容:didFinishLaunchingWithOptions:

[[UITabBar appearance] setTintColor:[UIColor yellowColor]];
[[UITabBar appearance] setBarTintColor:[UIColor darkGrayColor]];
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:10.0f], NSForegroundColorAttributeName:[UIColor blackColor]} forState:UIControlStateSelected];