不多说,直接上方案。
  一、背景图片
  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];

转载于:https://www.cnblogs.com/ubersexual/p/3259795.html

ios更改UITabBarController背景以及选中背景图片的方法相关推荐

  1. SVG公众号排版『iOS手机长按禁止选中文字』解决方法

    最近一位老铁向懂点君提问了一个问题:在iOS手机中长按切换图片会选中文字(SVG效果上下有文本内容),安卓手机则不会选中文字.看到问题后,脑子里立马蹦出了一个解决方法,在svg元素和p元素添加禁止文本 ...

  2. element更改导航菜单被选中项的背景颜色

    element更改导航栏被选中项的背景颜色 在使用element的导航栏菜单时,官方文档指明可以改变导航栏的的背景颜色,字体颜色以及选中项的字体颜色,但是有时我们想要使用自定义颜色.在F12中可以看见 ...

  3. c++图片背景替换为白色_4种方法,3秒快速更换证件照背景!你还要去照相馆花冤枉钱吗?...

    搞不懂都2020年了,你们换个证件照底色还跑照相馆的吗? 那不跑照相馆,应该怎么换? "PPT啊!PS啊!手机啊!"那么多方法,还能没有一个适合你用的? 一.电脑端更换底色方法 1 ...

  4. python改背景颜色_Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色

    !!!本博客,是对图像的背景颜色的修改的基础讲解~!!! 还包括一个练习--是对背景色修改的一点应用尝试!!!--始终相信学习多一点探索,脚步会更坚定一些~ 愿所有正在努力的人都可以坚持自己的路一直走 ...

  5. html给按钮设置背景,设置按钮背景图片(HTML-CSS)

    很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用JS去操作表单的提交,即当用户点击这个图片时响应一个JS来提交表单.其实还有一种方法,就是直接设置SUBMIT按钮的图片背景.设置它的图片 ...

  6. android 视频做背景图片,视频后面怎么加背景图片?安卓手机给视频添加背景图片的方法...

    狸窝是帮助用户解决问题 提供教程解决方案 在这个过程中有使用我们自己开发的软件 也有网上找的工具 只要帮助用户解决问题就好!同意则往下继续了解学习 ... 注意此教程方案是:『安卓手机端教程方案』.很 ...

  7. python窗口设置背景图片_PyQt5 实现给窗口设置背景图片的方法

    PyQt5 实现给窗口设置背景图片的方法 QPalette类可以十分简单的达到设置窗口背景图片的目的 def use_palette(self): self.setWindowTitle(" ...

  8. 简述改变计算机桌面背景的方法,win7开关机背景图怎么更换_win7电脑换开关机壁纸图片的方法...

    最近有朋友问小编win7开关机背景图怎么更换的问题,对于这个问题,相信很多朋友都不是太清楚,有时我们会觉得电脑默认的开关机壁纸不好看,那么我们应该如何更换win7开关机背景图呢?别着急,今天小编就针对 ...

  9. 给盒子添加默认背景图和选中背景图

    给盒子添加默认背景图和选中背景图 用于每张默认图片和每张选中图片均不一致的情况 <template><divclass="weather":class=" ...

最新文章

  1. NYOJ 600 花儿朵朵
  2. 【Cannot convert from [[B] to】 @RabbitListener 反序列化报错
  3. cocos2d基础介绍
  4. .net webconfig 配置说明123
  5. QuickTime文件格式解析
  6. Java类名.方法和变量
  7. select for update作用
  8. Windows Mobile 进阶系列.WCF Mobile(Part 2)
  9. 计算机丢失gdiplus.dll怎么办,win7系统丢失gdiplus.dll报错的解决办法
  10. ps ui html,【ps制作网页页面】ps图像如何生成html?如何将PS制作的网页效果图变成可用的网页?PC端UI设计尺寸规范?...
  11. 计算机音乐有哪些优势,谈谈用电脑听无损音乐的好处
  12. PC 真的不行了!Intel、AMD 同遭生死劫
  13. Topic ods_base_db not present in metadata after 60000 ms.
  14. .net Core WebApi记录
  15. 什么是 Android Jetpack?
  16. 两阶段鲁棒优化程序 采用微网为模型,主要将安装成本、运营成本以及综合效益三个方面纳入考虑范围
  17. php 按位与运算,PHP 按位与()运算符应用实践
  18. LLVM指令选择中的模式定义方法
  19. idea 跳转到方法调用处
  20. 山东大学软件学院2021-2022数据结构期末考试

热门文章

  1. python及numpy,pandas易混淆的点
  2. 计算机主板知识,小白必看电脑主板知识扫盲,主板是什么?有什么用?
  3. qq文件对方接收后一定会有提示吗_QQ要增加消息已读功能,你是否赞成?
  4. c语言2L,求助,R8C 2L 如何在C语言定位常数数组到绝对地址
  5. Spring Boot 自定义属性值
  6. linux监控脚本是否运行状态,Linux Shell脚本之通过json判断应用程序内部运行状态...
  7. 2-27 最短路径《啊哈算法》2-28完成四种算法
  8. POJ 2287 - Tian Ji -- The Horse Racing(贪心)
  9. 01python初识—编辑器版本变量知识
  10. LeetCode#53 Maximum Subarray