关于iOS Tabbar的一些设置

事实上iOS Tabbar的可定制性很高,我们没有必要反复造轮子,以下是笔者收集的一些tabbar的经常使用设置。希望对大家有所帮助。

设置tabbar选中颜色

iOS7设置例如以下:

[self.tabBarController.tabBarsetSelectedImageTintColor:[UIColor greenColor]];

ios8中例如以下设置:

self.tabBar.tintColor=[UIColor greenColor];

消除tabbar边框

在appdelegate的程序启动处:

[[UITabBar appearance] setShadowImage:[[UIImage alloc]init]];

[[UITabBar appearance] setBackgroundImage:[[UIImage alloc]init]];

设置tabbar item原始图标与原始选中图标。而不是系统自己主动填充的颜色

    // 拿到 TabBar 在拿到想应的item
    UITabBar *tabBar = _tabBarController.tabBar;
    UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
    UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
    UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
    UITabBarItem *item3 = [tabBar.items objectAtIndex:3];
    // 对item设置对应地图片
    item0.selectedImage = [[UIImage imageNamed:@"recognize-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item0.image = [[UIImage imageNamed:@"recognize"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    item1.selectedImage = [[UIImage imageNamed:@"life-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item1.image = [[UIImage imageNamed:@"life"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    item2.selectedImage = [[UIImage imageNamed:@"edit-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item2.image = [[UIImage imageNamed:@"edit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    item3.selectedImage = [[UIImage imageNamed:@"setting-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item3.image = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

设置tabbar背景图片

    UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, Main_Screen_Width, 49)];
    backView.backgroundColor = [UIColor redColor];
    [self.tabBar insertSubview:backView atIndex:0];
    self.tabBar.opaque = YES;

设置tabbar item选中时的背景图片

1、5.0以上版本号

self.tabBar.selectionIndicatorImage = [UIImage imageNamed:@"system_tabbar_item_selected.png"];

2、5.0下面版本号

首先实现例如以下方法:

- (void)setNoHighlistTabBar:(UITabBarController *)tabBarController
{
    NSArray * tabBarSubviews = [tabBarController.tabBar subviews];

    int index4SelView;

    if(tabBarController.selectedIndex+1 > 4)
    {//selected the last tab.
        index4SelView = [tabBarSubviews count]-1;
    }
    else if([tabBarController.viewControllers count] > 5)
    {//have "more" tab. and havn‘t selected the last tab:"more" tab.

        index4SelView = [tabBarSubviews count] - 5 + tabBarController.selectedIndex;
    }
    else
    {//have no "more" tab.

        index4SelView = [tabBarSubviews count] -
        [tabBarController.viewControllers count] + tabBarController.selectedIndex;
    }
    if([tabBarSubviews count] < index4SelView+1)
    {
        assert(false);
        return;
    }
    UIView * selView = [tabBarSubviews objectAtIndex:index4SelView];

    NSArray * selViewSubviews = [selView subviews];

    for(UIView * v in selViewSubviews)
    {
        if(v && [NSStringFromClass([v class]) isEqualToString:@"UITabBarSelectionIndicatorView"])

        {//the v is the highlight view.
            [self.selectedItemBgImageView removeFromSuperview];
            [selView insertSubview:self.selectedItemBgImageView belowSubview:v];

            [v removeFromSuperview];

            break;

        }
    }
}

改方法的实质就是循环tabBar的subViews, 找到tabBar中的这个view, 是一个UITabBarSelectionIndicatorView的view,然后把它替换成你自己创建的UIImageView, 上例中的self.selectedItemBgImageView.

然后须要把UITabBarController的delegate设为self, 在tabBarController:didSelectViewController的代理方法中运行上面的方法:[self setNoHighlistTabBar:self];

还有setSelectIndex:方法中也要运行[self setNoHighlistTabBar:self];

时间: 2024-10-10 15:06:58

关于iOS Tabbar的一些设置的相关文章

iOS tabbar 属性

1.设置tabbar背景颜色 1 NSArray *controllers = [NSArray arrayWithObjects:nav_main,nav_channle,nav_me, nil]; 2 _tabController.viewControllers = controllers; 3 _tabController.delegate = self; 4 5 for (int i=0;i<self.tabController.viewControllers.count;i++) {

ios weibo 第二天 设置导航栏属性,添加加号按钮

要点:1.在底部添加加号按钮 2.设置导航栏属性 1.weibo底部的button其中四个按钮是一样的,其中中间的加号需要另外做处理 tablebar是自己定义的 ,代码如下 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // 删除系统自动生成的UITabBarButton for (UIView *child in self.tabBar.subviews) { if ([child isKin

iOS tabbar 控制器基本使用

RootViewController *rootVC=[[RootViewController alloc] init] SignInViewController *signVC = [[SignInViewController alloc]init]; //如果在这里指定tabitem标题,则在FirstViewController中指定self.tabBarItem.title则不生效 signVC.title = @"打卡"; UITabBarItem *signItem = [

iOS开发之iOS7设置状态栏字体颜色

应用中登陆界面颜色较浅,状态栏字体颜色为黑色,跳转到主界面之后,界面颜色较深,状态栏颜色随之变成白色.但是再重新返回登陆界面后,状态栏字体颜色并没有改成黑色,特别别扭. plist文件里将View controller-based status bar appearance改为NO然后在view controller里边加上下边一句就可以了,这样状态栏是黑字 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyle

iOS中arc的设置与使用

工程配置arc方案: 1,直接在targets->build phases中修改compiler Flags,是否支持arc.添加:-fobjc-arc,就可以让旧项目支持arc.如果想让原来支持arc的不使用arc则添加-fno-objc-arc iOS中arc的设置与使用

iOS的UIFont如何设置字体

想必大家都用过UILabel,但是怎么来设计label上的字体呢?有一个方法: label.font = [UIFont fontWithName:@"Avenir-Light" size:28]; 但是fontWithName后面的参数从哪里来得呢?我们不妨来打印出familyNames NSArray *familyNames = [UIFont familyNames]; for( NSString *familyName in familyNames ){ NSLog(@&qu

iOS 开发之 - iOS6设置UISearchbar的背景色

效果图: ios 6 默认: 修改之后: 代码: if (!IsIOS7) { [[ _searchBar.subviews objectAtIndex : 0 ] removeFromSuperview ]; [ _searchBar setBackgroundColor :[ UIColor clearColor ]]; } mark 为我成为大神做铺垫. iOS 开发之 - iOS6设置UISearchbar的背景色

iOS 国际化多语言设置 xcode7

iOS 国际化多语言设置 方式一: 1. 在storyboard中创建好UI,然后在 project 里面  Localizables 栏目里面,添加你需要的语言:默认是Englist; 比如这里我添加了 简体中文 2.添加完之后,原来的Main.storyboard 就会多了一个国际化的语言配置文件 3. 点击 Main.strings 文件,就可以在这里配置中文的语言:里面自动添加现在storyboard上面创建好的UI控件的代码,直接在这里修改即可:此时sotyboard上设计的理解为 英

IOS键盘的相关设置(UITextfield)

http://blog.csdn.net/h3c4lenovo/article/details/8447661 一.键盘风格 UIKit框架支持8种风格键盘. typedef enum { UIKeyboardTypeDefault,                // 默认键盘:支持所有字符 UIKeyboardTypeASCIICapable,           // 支持ASCII的默认键盘 UIKeyboardTypeNumbersAndPunctuation,  // 标准电话键盘,