iOS系统tabbar图标出现重影问题
大家在自定义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图标出现重影问题的更多相关文章
- 社交网络编程API之iOS系统自带分享
社交网络编程API 社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类: SLComposeViewController 提供撰写社交信息(如微博信息)的视图控制器, ...
- iOS系统中导航栏的转场解决方案与最佳实践
背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...
- Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ...
- IOS和Android图标尺寸
刚开始接触UI的时候,碰到的最多的就是尺寸问题,今天我们就来谈谈IOS和Android 图标设计尺寸吧! 一.IOS篇 1.iOS app图标的圆角半径是多少? (注:现在IOS图标是不需要再画圆角了 ...
- 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)
今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...
- 设置 iOS 应用的图标和名称
Xcode 8.1 设置 iOS 应用的图标和名称的方法: 设置应用图标: 1.在 Resources 中添加图片: 2.在 Icon file 的属性值填写图标文件的名称. 设置应用名: 1.修改 ...
- iOS 7 tabbar 透明的问题
在某种特定情景中,ios的tabbar会出现完全透明的情况,出现这种情况的原因是ios7 默认的view因为IOS7默认是全延伸,也就是说controller是延伸到tabbar下面,并且在windo ...
- 基于H5的移动端开发,window.location.href在IOS系统无法触发问题
最近负责公司的微信公众号开发项目,基于H5进行开发,某些页面window.location.href在Android机上能正常运行而IOS系统上无法运行,导致无法重定向到指定页面,查了好久终于找到方法 ...
- iOS 系统架构
https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/ ...
随机推荐
- ime-mode
2016-08-18 ime-mode 用户输入法控制,主要是防止用户输入文本符号等(比如电话号码输入时) (设定值) auto・・・和没设定一样 active・・・激活本地输入法(如中文),用户可以 ...
- appml的安装与使用
来自w3cshool的中文文档:http://www.w3cschool.cc/appml/appml-tutorial.html 我们要做的是完整的例子,所以从这里http://www.w3csch ...
- 无线OSS-高精度整数加法
#include<iostream> #include<string> using namespace std; int compareStr(string str1, str ...
- 改造laravel的登录流程,仅使用一个token登录laravel
背景:最近使用lavavel来改造目前的系统,但是之前的老系统还不能立马下线,这时就出现了双系统共存的状态,需要解决的一个问题就是一次登录2个系统. 第一步 修改中间件App\Http\Middlew ...
- LabVIEW之生产者/消费者模式--队列操作 彭会锋
LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...
- js创建标签的方法--依赖于jquery
/** * 创建标签,传入一个对象,返回一个完整的标签 * @param {Object.attribute} tag 标签 * @param {Object.attribute} attribute ...
- C++ map的遍历
一般使用迭代器遍历比较方便. map<string,int> m; map<string,int>::iterator it; it = m.begin(); while(it ...
- Android开发--Android Studio配置
1.常见问题 emulator: You might want to adjust your AVD RAM size and/or HAXM configuration to run in fast ...
- (转)Tomcat数据源连接池加密
文章来源 :http://my.oschina.net/cimu/blog/164757 我们在使用Tomcat数据库连接池的时候都是明文存储数据库用户名和密码的,例如: <Resource n ...
- Struts2 Result 类型和对应的用法详解 2