更改tabbaritem的字体大小

有没有可能改变标签的字体大小?

我build议更好的方法:

[yourTabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, [NSValue valueWithUIOffset:UIOffsetMake(0,0)], UITextAttributeTextShadowOffset, [UIFont fontWithName:@"Helvetica" size:18.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; 
 for(UIViewController *tab in self.tabBarController.viewControllers) { [tab.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Helvetica" size:20.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; } 

在Swift 2.0中

 override func viewDidLoad() { super.viewDidLoad() let appearance = UITabBarItem.appearance() let attributes: [String: AnyObject] = [NSFontAttributeName:UIFont(name: "American Typewriter", size: 12)!, NSForegroundColorAttributeName: UIColor.orangeColor()] appearance.setTitleTextAttributes(attributes, forState: .Normal) } 

在Swift 3.0中

 override func viewDidLoad() { super.viewDidLoad() let appearance = UITabBarItem.appearance() let attributes: [String: AnyObject] = [NSFontAttributeName:UIFont(name: "American Typewriter", size: 12)!, NSForegroundColorAttributeName: UIColor.orange] appearance.setTitleTextAttributes(attributes, for: .normal) } 

[更新] @ cancer86的iOS 7.0+版本很好的答案:

 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"Helvetica" size:tabFontSize], NSFontAttributeName, nil] forState:UIControlStateNormal]; [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor redColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"Helvetica" size:tabFontSize], NSFontAttributeName, nil] forState:UIControlStateSelected]; 

主要的变化是UITextAttributeTextColor和UITextAttributeFont都被弃用

为了将其应用到所有选项卡(感谢@ToolmakerSteve指出)

 for(UIViewController *tab in self.tabBarController.viewControllers) { [tab.tabBarItem setTitleTextAttributes: ...]; } 

在iOS 5.0或更高版本中很简单:

 [[UITabBarItem appearance] setTitleTextAttributes:@{UITextAttributeFont:[UIFont boldSystemFontOfSize:15]} forState:UIControlStateNormal]; 
 TabBarIncreaseFonts(self.tabBarController); void TabBarIncreaseFonts(UITabBarController* customTabBarController) { for(UIView* controlLevelFirst in [customTabBarController.tabBar subviews]) { if(![controlLevelFirst isKindOfClass:NSClassFromString(@"UITabBarButton")]) continue; for(id controlLevelSecond in [controlLevelFirst subviews]) { [controlLevelSecond setBounds: CGRectMake(0, 0, 100, 48)]; if(![controlLevelSecond isKindOfClass:NSClassFromString(@"UITabBarButtonLabel")]) continue; [controlLevelSecond setFont: [UIFont boldSystemFontOfSize:20]]; [controlLevelSecond setFrame: CGRectMake(0, 0, 96, 48)]; [controlLevelSecond setTextAlignment:UITextAlignmentCenter]; } } } 

[在这里留下来供我自己参考,只是一些其他的工作答案。 对于mem,这是iOS 7的一个修复,这是超出了一个问题…]

 @implementation UITabBarController (Util) - (void) fixForIos7 { if (!IS_IOS7) return; UIFont *tabBarFont = [UIFont systemFontOfSize:12]; NSDictionary *titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys: tabBarFont, UITextAttributeFont, nil]; for(UIViewController *tab in self.viewControllers) { [tab.tabBarItem setTitleTextAttributes:titleTextAttributes forState:UIControlStateNormal]; } } @end 

缺less的方法是

 #define IS_IOS7 ( UIDevice.currentDevice.systemVersion.floatValue > 6.9 ) 

其实有一个办法。

  NSMutableArray *tabBarItems = [[[[[self.view subviews] objectAtIndex:1] subviews] mutableCopy] autorelease]; for (int item = 0; item < [tabBarItems count]; item++) { for (int subview = 0; subview < [[[tabBarItems objectAtIndex:item] subviews] count]; subview++) { for (int item = 0; item < [tabBarItems count]; item++) { for (int subview = 0; subview < [[[tabBarItems objectAtIndex:item] subviews] count]; subview++) { if ([[[[tabBarItems objectAtIndex:item] subviews] objectAtIndex:subview] isKindOfClass:NSClassFromString(@"UITabBarButtonLabel")]) [[[[tabBarItems objectAtIndex:item] subviews] objectAtIndex:subview] setFont:[UIFont systemFontOfSize:6.0f]]; } } } }