iOS11 自定义tabbar图标出现重影问题
2017-10-11 15:15
204 查看
大家在自定义tabbar的时候会将系统的tabbar干掉,然后放上自已自定义的tabbar(含有想要的Button)对不对,具体代码如下:
然后完美使用自已自定义的,就可以随心所欲在view上做事情,或者做一些想要的动画
但是
最近项目出现tabbar重影问题,我明明将系统的tabbar干掉了,但是还是感觉会出来,在我使用以下代码进行页面间的跳转的时候,重影问题出现了.
重影图片居然长那么丑,就是系统的蓝色加上自已的色彩,完全懵逼了有木有!!!
我设置的颜色是00d4d3 而重叠上系统的蓝色
拿层级工具查看
有没有觉得跟蛋疼,,,疼疼疼....
这让我很尴尬啊,为什么去掉了系统的tabbar又出现了
细心点会发现只是进行跨级跳跃的时候会出现该bug,只是我是这样出现的,不知道还有其他同学会怎么奇葩地出现改bug
严肃来说如果只是单个跳转并没有出现重影,而进行跨级跳跃的时候会出现tabbar图标重影问题.
以下代码为跨级跳转
在百度寻找了一堆答案,试了无限次遍,终于在一个方法里面实现几行代码就解决了,重影问题没有再出现过
请同学们仔细观察以下~~!!!--------跨级跳转的时候会发现什么~!!
具体原理不贴了,毕竟我们是解决问题的嘛~~(其实我也不知道发现啥,反正系统的tabbar会再出现一次)
解决办法:
在主要的视图layoutSubView中再删除一次,以防出现的时候不能删除,在viewWillAppear中删除只是保证删除一次
所以要进行多次删除
有同学会发现这样删除会不会把本来不存在的删除会出现空指针访问错误
这样是不会出现这种问题的,因为是遍历他的子控件,发现有才删除,所以并不会删除不存在的东西
/** * 添加自定义的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上文字出现重影
- iOS11 自定义tabbar遇到的问题,删除系统自带tabbar按钮
- 自定义tabbar中,点击退出登录出现的问题
- iOS11调用百度地图出现自定义 大头针不显示的问题
- iOS自定义TabBar在屏幕旋转时出现重影
- 解决在自定义tabbar的时候出现双tabbar的问题
- 解决自定义UITableViewCell在浏览中出现数据行重复的问题
- iOS开发-自定义TabBar使用popToRootViewControllerAnimated重叠问题解决
- 自定义 AlertDialog 出现的问题
- 解决自定义UITableViewCell在浏览中出现数据行重复的问题
- 项目里出现的问题05(自定义DEBUG)
- bootstrap解决图标显示不出来问题,出现GET .woff 404 (Not Found)的问题
- Android自定义FloatingActionButton滑动行为只隐藏不出现的问题小结
- Android 水平加载图片 自定义 HorizontalScrollView,防止一次性加载出现性能问题,防止OOM
- 自定义View想使用Scroller实现滑动效果,但是事件接收出现问题,只收到ACTION_DOWN,而无法收到ACTION_MOVE, ACTION_UP等消息的处理
- RatingBar 自定义 出现拉伸 重影
- List<Map>自定义Comparator在jdk1.7中出现问题
- 【Android】(已更新解决方案)更新SDK版本(25)后,自定义FloatingActionButton的Behavior(跟随列表滑动显示隐藏)只隐藏不出现的问题
- [置顶] 多层Fragment嵌套出现重影问题_原理解析_解决方法(Winter原创,转载请注明出处)
- Xcode8打的包安装在iOS11系统上,为什么未出现适配问题?