关于iOS7-8的系统UITabBarController

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

眼看iOS9就要出了。最近做项目用的系统的UITabBarController,就mark一下遇到的问题。

系统默认的UITabBarController使用storyboard可以进行设置。

下面主要是讲代码设置tabbar的图片与颜色。

1.tabbar的背景颜色或背景图(如图灰色效果)

tabBarController.tabBar.backgroundImage = [UIImage imageNamed:@"tabbar_unselected"];

这个图片可以是一张宽度为2像素,高98的一个细线图。

2.设置选中item的背景颜色或背景图(如图,蓝色效果)

UIImage* selectedImage = [UIImage imageNamed:@"tabbar_select"];

selectedImage=[selectedImage resizableImageWithCapInsets:UIEdgeInsetsZero];

tabBarController.tabBar.selectionIndicatorImage= selectedImage;

这里的图片也可以跟上面的背景图片一样,可以是一张宽度为2像素,高98的一个细线图。

selectedImage = [selectedImage resizableImageWithCapInsets:UIEdgeInsetsZero];

是为了用细线图填充要设置的image

3.设置图片颜色与字体颜色及字号

NSMutableDictionary *textAttrs=[NSMutableDictionary dictionary];

textAttrs[NSForegroundColorAttributeName]=[UIColor whiteColor];

textAttrs[NSFontAttributeName]= [UIFont systemFontOfSize:12.f];

MLNavigationController * oneController = [[MLNavigationController alloc] initWithRootViewController:VC1];

oneController.tabBarItem.title = @"首页";

oneController.tabBarItem.image = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

oneController.tabBarItem.selectedImage = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

[oneController.tabBarItem setTitleTextAttributes:textAttrs forState:UIControlStateNormal];

我的需求是设置图片与颜色在选中与未选中状态下都为白色。

3.1字体颜色设置

字典textAttrs的key值可以双击去查看你要设置的选项来设置,这里注意一点

- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

这个方法state只能设置UIControlStateNormal,UIControlStateSelected,UIControlStateDisabled三个type

3.2图片颜色设置

图片你会发现用了一个image的方法

- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode NS_AVAILABLE_IOS(7_0);

这个方法是告诉系统取消渲染,使用原本的图片颜色。

这样你就可以用你提供的selectedImage与image进行设置了。

oneController.tabBarItem.image = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

oneController.tabBarItem.selectedImage = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航