zoukankan      html  css  js  c++  java
  • 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];

  • 相关阅读:
    struts2-20-下载文件及授权控制
    struts2-19-合法用户上传文件
    struts2-18-上传多文件
    struts2-17-上传单个文件
    struts2-16-userAnnotationValidate
    struts2-15-用户名校验
    struts2-14-用户自定义全局转换器
    struts2-13-用户自定义局部转换器
    struts2-12-用户自定义转换器(地址)
    struts2-11-OGNL实现书籍的增删改查
  • 原文地址:https://www.cnblogs.com/ubersexual/p/3259795.html
Copyright © 2011-2022 走看看