记录一个坑的解决历程
声明一个按钮属性:
@property(nonatomic,strong)UIButton *valueBtn;
复制代码
在页面初始化地方创建按钮:
self.valueBtn = [[UIButton alloc]initWithFrame:CGRectMake(x, y, width, width)];
self.valueBtn.titleLabel.font = [UIFont systemFontOfSize:9];
self.valueBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
self.valueBtn.userInteractionEnabled = NO;
self.valueBtn.backgroundColor = RGBCOLOR(234,36,36);
[self.valueBtn setTitleColor:RGBCOLOR(255, 254, 254) forState:UIControlStateNormal];
[self addSubview:self.valueBtn];
复制代码
自定义设置角标:
- (void)showBageValues:(NSInteger)bageValues{NSLog(@"-----showBageValues---%ld", bageValues);CGFloat width = 11;if (bageValues == 0) {self.valueBtn.hidden = YES;NSLog(@"-----valueBtn: %f---%f--%@", self.valueBtn.frame.size.height, self.valueBtn.frame.size.height, self.valueBtn);}else if (bageValues < 10){NSLog(@"---self.valueBtn.hidden = NO");self.valueBtn.hidden = NO;CGRect frame = self.valueBtn.frame;frame.size = CGSizeMake(width, width);self.valueBtn.frame = frame;self.valueBtn.layer.masksToBounds = YES;self.valueBtn.layer.cornerRadius = width/2;[self.valueBtn setTitle:[NSString stringWithFormat:@"%lu",bageValues] forState:UIControlStateNormal];}else if(bageValues < 100){self.valueBtn.hidden = NO;CGRect frame = self.valueBtn.frame;frame.size = CGSizeMake(width*1.6, width*1.1);self.valueBtn.frame = frame;self.valueBtn.layer.masksToBounds = YES;self.valueBtn.layer.cornerRadius = 6;[self.valueBtn setTitle:[NSString stringWithFormat:@"%lu",bageValues] forState:UIControlStateNormal];}else if (bageValues > 99){self.valueBtn.hidden = NO;CGRect frame = self.valueBtn.frame;frame.size = CGSizeMake(width*2.2, width*1.2);self.valueBtn.frame = frame;self.valueBtn.layer.masksToBounds = YES;self.valueBtn.layer.cornerRadius = 7;[self.valueBtn setTitle:[NSString stringWithFormat:@"99+"] forState:UIControlStateNormal];}
}
复制代码
问题描述: 登录A账号,假如获取消息角标数量为6,切换成B账号登录,假如B账户没有消息,则角标应该为0,即不显示角标,而此时角标却仍显示为6;
分析: 刚开始判断以为是退出登录时 没有清除相关数据,因为消息是集成的环信,所以就一直查看环信相关文档和Demo中相关代码,奇怪的是几乎没有类似的问题。 打断点调试,发现切换账号后,此时代码是走了如下代码的
if (bageValues == 0) {self.valueBtn.hidden = YES;NSLog(@"-----valueBtn: %f---%f--%@", self.valueBtn.frame.size.height, self.valueBtn.frame.size.height, self.valueBtn);}
复制代码
然后就想知道为什么明明设置了hidden为YES,却没有隐藏。
解决: 退出A账号 切换B账号或者不切换账号仍登录此账号,会先走初始化方法
self.valueBtn = [[UIButton alloc]initWithFrame:CGRectMake(x, y, width, width)];
复制代码
这样的写法会又创建一个按钮,而虽然走了self.valueBtn.hidden = YES;只是将新创建的按钮隐藏了,之前创建的那个valueBtn并没有隐藏,如果打印它们的地址,会发现两个不是同一个。因此,创建按钮修改为懒加载。
记录一个坑的解决历程相关推荐
- 安装CDH5.15.0过程详细记录¥坑与解决办法(20180724)
参考了网上很多教程,踩过很多坑,总结一篇,仅供参考: node1 , node2, node3 :其中node1 为主节点,2 3为从节点. 机子内存太小不建议安装测试学习,否则过程很难受 ...说实 ...
- 记录一个坑:java.util.zip.ZipException: zip file is empty
接手一个离职同事的项目,运行起来没问题但是kotlin还用的是 1.3.70版本,这都2021年了,还用这么低版本果断换成1.5.30版本,同步一下没问题,运行~~~~~~ java.util.zi ...
- 记录一个坑:mouseleave事件
今天在做一个弹出式下拉框时遇到了一个BUG,如下图所示,我下拉框中加入一组多选多选框,并且设置当用户的鼠标移出多选框部分的div时,多选框隐藏,这个时候当然是选择使用mouseleave事件来实现最好 ...
- mongoose 批量修改字段_记一次脚本批量修改数据库字符集所埋下的一个坑及解决思路...
概述 前段时间参考网上教程用脚本批量修改了数据库的字符集,过了一天后业务反馈某个功能用不了,检查发现数据库字符类型的字段的默认值和说明全部为空,用实验测试了一下果然脚本存在一些bug,后续因此加班了一 ...
- 记录一个坑:ValueError: Colormap spectral is not recognized.
我按照书上的代码敲上去是这样的. ValueError Traceback (most recent call last) <ipython-input-16-306c0fd67636> ...
- 记录一个问题的解决过程
一.场景复现 改动的是16年左右的React项目,各环境启动脚本如下: 当执行dev脚本将项目运行起来时,发现箭头函数和async同时使用会造成箭头函数内的无法访问并报错如下 二.事故分析思路 最初碰 ...
- 记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑
我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也 ...
- 记录安装Manjaro踩过的那些坑,解决安装后进入grub 的问题
记录安装Manjaro踩过的那些坑,解决安装后进入grub 的问题 最完美的一次linux体验 先说自己安装linux的经验,大二的时候最先接触的是Centos和Ubuntu服务器版的,都是在虚拟机中 ...
- 再次记录 Visual Studio 2015 CTP 5 的一个坑
升级到 VS2015 CTP 之后,今天要改项目中的一个东西,然后就不得不把 C# 6.0 改变的语法代码中改了下(之前没改,大约200多个),首先,比如下面示例代码: var fullName = ...
最新文章
- IEEE史上首位华人主席,马里兰大学终身教授刘国瑞当选
- stm32 堆和栈(stm32 Heap Stack)
- UNIX再学习 -- 高级 I/O
- C#深入.NET平台的软件系统分层开发
- C语言灵魂——算法!
- 识别中文_中文场景文字识别大赛官方baseline
- 实现微信支付宝收款到账语音提醒
- 新手学习selenium路线图(老司机亲手绘制)-学前篇(转上海悠悠)
- 2020家用千兆路由器哪款好_企业级千兆路由器哪个牌子好?2020排名
- Python量化投资——这个均线择时投资策略,12年只交易24次,比沪深300收益率高700倍
- Unity中Combined Mesh (root: scene)的解决方法
- 浏览器禁用了cookie怎么办
- 1 1 2 3 5 8 java_【Java】一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。...
- python笔迹识别_笔迹鉴别(1) —— 实现步骤概述
- games101 1-2
- Windows下搭建ant+jenkins+jmeter自动化接口测试框架(详细篇)
- 差压传感器和差压变送器的区别在哪里
- 原SAP全球副总裁邓永富加盟金蝶,担任金蝶集团副总裁
- 运行在VMware上的VMware公司
- lag和lead 分析函数
热门文章
- ssh整合问题总结--使用struts2+Ajax+jquery验证用户名是否已被注册
- MSXML解析[转]
- Extended WPF Toolkit 新控件介绍
- 线性代数同济第六版_线性代数考试内容与课后习题
- flutter环境搭建-完整版
- eclipse使用git合并_Eclipse中使用git
- hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
- SQLite中的SELECT子句使用通配符
- performActionForShortcutItem方法未触发
- c语言指针和结构体难点,C语言指针和结构体