大家在自定义tabbar的时候会将系统的tabbar干掉,然后放上自已自定义的tabbar(含有想要的Button)对不对,具体代码如下:

/**
* 添加自定义的tabBar
*/
-(void)addTabBarView
{
MSTabBar * tabbar = [[MSTabBar alloc]init]; tabbar.backgroundColor = [UIColor whiteColor]; tabbar.frame = self.tabBar.bounds; tabbar.delegate = self; tabbar.tabBarItems = self.tabBarItems; [self.tabBar addSubview:tabbar]; } /**
* 在主要控制器出来时将系统的tabbar移除掉只剩下自已的
*/
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated]; //将tabbar里面的东西除了自定义的tabbar不删除,其他都删除
//留下一个自定义的.想隐藏就能隐藏掉,只要设置tabbar的一个隐藏属性就好,
for (UIView * view in self.tabBar.subviews)
{ if (![view isKindOfClass:[MSTabBar class]]) { [view removeFromSuperview];
}
} }

然后完美使用自已自定义的,就可以随心所欲在view上做事情,或者做一些想要的动画

但是

最近项目出现tabbar重影问题,我明明将系统的tabbar干掉了,但是还是感觉会出来,在我使用以下代码进行页面间的跳转的时候,重影问题出现了.

重影图片居然长那么丑,就是系统的蓝色加上自已的色彩,完全懵逼了有木有!!!

  我设置的颜色是00d4d3 而重叠上系统的蓝色

拿层级工具查看

有没有觉得跟蛋疼,,,疼疼疼....

这让我很尴尬啊,为什么去掉了系统的tabbar又出现了

细心点会发现只是进行跨级跳跃的时候会出现该bug,只是我是这样出现的,不知道还有其他同学会怎么奇葩地出现改bug

严肃来说如果只是单个跳转并没有出现重影,而进行跨级跳跃的时候会出现tabbar图标重影问题.

以下代码为跨级跳转

 //发通知
for (UIViewController *controller in self.navigationController.viewControllers) { if ([controller isKindOfClass:[MSDetailWebController class]]) { [self.navigationController popToViewController:controller animated:NO]; } }

在百度寻找了一堆答案,试了无限次遍,终于在一个方法里面实现几行代码就解决了,重影问题没有再出现过

请同学们仔细观察以下~~!!!--------跨级跳转的时候会发现什么~!!

具体原理不贴了,毕竟我们是解决问题的嘛~~(其实我也不知道发现啥,反正系统的tabbar会再出现一次)

解决办法:

-(void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews]; for (UIView * view in self.tabBar.subviews)
{ if (![view isKindOfClass:[MSTabBar class]]) { [view removeFromSuperview];
}
}
}

在主要的视图layoutSubView中再删除一次,以防出现的时候不能删除,在viewWillAppear中删除只是保证删除一次

所以要进行多次删除

有同学会发现这样删除会不会把本来不存在的删除会出现空指针访问错误

这样是不会出现这种问题的,因为是遍历他的子控件,发现有才删除,所以并不会删除不存在的东西

这样就完美解决了问题,不会再重影问题,尽管你再怎么跳~~~来呀跳啊啊啊~~

iOS系统tabbar图标出现重影问题的更多相关文章

  1. 社交网络编程API之iOS系统自带分享

    社交网络编程API 社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类: SLComposeViewController 提供撰写社交信息(如微博信息)的视图控制器, ...

  2. iOS系统中导航栏的转场解决方案与最佳实践

    背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...

  3. Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法

    简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ...

  4. IOS和Android图标尺寸

    刚开始接触UI的时候,碰到的最多的就是尺寸问题,今天我们就来谈谈IOS和Android 图标设计尺寸吧! 一.IOS篇 1.iOS app图标的圆角半径是多少? (注:现在IOS图标是不需要再画圆角了 ...

  5. 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

    今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...

  6. 设置 iOS 应用的图标和名称

    Xcode 8.1 设置 iOS 应用的图标和名称的方法: 设置应用图标: 1.在 Resources 中添加图片: 2.在 Icon file 的属性值填写图标文件的名称. 设置应用名: 1.修改 ...

  7. iOS 7 tabbar 透明的问题

    在某种特定情景中,ios的tabbar会出现完全透明的情况,出现这种情况的原因是ios7 默认的view因为IOS7默认是全延伸,也就是说controller是延伸到tabbar下面,并且在windo ...

  8. 基于H5的移动端开发,window.location.href在IOS系统无法触发问题

    最近负责公司的微信公众号开发项目,基于H5进行开发,某些页面window.location.href在Android机上能正常运行而IOS系统上无法运行,导致无法重定向到指定页面,查了好久终于找到方法 ...

  9. iOS 系统架构

    https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/ ...

随机推荐

  1. Java双循环break的用法

    break只跳出当前循环,也就是内循环,如果想跳出外循环有两种办法:1:for(int i = 0;i<9;i++){ //用两个breakfor(int j = 0;j<8;j++){b ...

  2. Linux(Ubuntu 14.04) setting up OpenGL

    1. Install c/c++ compilation package. 2. install openGL and freeGlut library sudo apt-get install me ...

  3. postgres 正则表达式 转

    http://blog.csdn.net/wugewuge/article/details/7704996 postgresql中使用正则表达式时需要使用关键字“~”,以表示该关键字之前的内容需匹配之 ...

  4. wampServer安装注意

    http://www.glbwl.com/wampServer-403-forbidden.html http://jingyan.baidu.com/article/e75aca8578147d14 ...

  5. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(三)

    前言 在上一篇中,我们依靠着EasyUI强大的前端布局特性把前端登录界面和主界面给搭建完成了.这一篇我们就要尝试着把整个解决方案部署到云端呢,也就是Visual Studio Online(TFVC) ...

  6. UIPIckerView现实城市选择

    实现城市选择,选中省时,后来自动显示相对应的城市,并且下面会打印出来对应的省和城市 . 因为plist里面是一个一个的字典. 1.字典转模型 HMCities.h #import <Founda ...

  7. 面试复习(C++)之直接选择排序

    #include <iostream> using namespace std; void Selection(int *a,int len) { ;i<len;i++) { int ...

  8. Visro 应用的前端模板工具介绍 -JsRender

    1.什么是JsRender: JsRender是一款JavaScript模版引擎,是具有简单直观,功能强大,可扩展的,早期版本是基于JQUERY 写的,后来作者重构了,就不再依赖JQUERY了. 它的 ...

  9. 前端开发week2

    从网页布局看思维方式以及思维方式对于前端制作的重要性 经过了两个星期的学习,对于静态网页的制作也已经有了比较完整的理论知识和实践基础,技术层面的东西固然还是很重要.是最基础的,但是在实际制作网页的过程 ...

  10. java开发环境搭建

    回顾环境安装的流程. 安装jdk 配置java开发环境 配置path以及classpath. 我是在http://www.oracle.com/上下载的.点击Downloads-->java f ...