关于iOS7-8的系统UITabBarController

眼看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];
 
posted on 2015-07-30 19:23  罗凇  阅读(559)  评论(0编辑  收藏  举报