• ios更改UITabBarController背景以及选中背景图片的方法


     不多说,直接上方案。
      一、背景图片
      1、5.0以上版本
         UIImage *image = [UIImage imageNamed:@"system_tabbar_bg.png"];
         [self.tabBar setBackgroundImage:image];
      2、5.0以下版本
         UIImage *image = [UIImage imageNamed:@"system_tabbar_bg.png"];
         NSArray *array = [self.view subviews];
         UITabBar *tabBar = [array objectAtIndex:1];
         tabBar.layer.contents = (id)image.CGImage;
     
      二、选中的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];

  • 相关阅读:
    ubuntu 11.10(32位系统)下编译android源码
    12 个基于 Rails 框架开发的 CMS 系统
    36 个 CSS 框架推荐
    再来 10 个新鲜的 HTML5 教程
    汇编程序开发环境搭配(转)
    推荐:介绍一个UndoFramework
    细数 Windows 平台上的 NoSQL 数据库
    使用ShareKit一键分享到Facebook,Twitter等平台
    25个jQuery的编程小抄
    10款iOS高效开发必备的ObjectiveC类库
  • 原文地址:https://www.cnblogs.com/ubersexual/p/3259795.html
Copyright © 2020-2023  润新知