声明一个按钮属性:

@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并没有隐藏,如果打印它们的地址,会发现两个不是同一个。因此,创建按钮修改为懒加载。

记录一个坑的解决历程相关推荐

  1. 安装CDH5.15.0过程详细记录¥坑与解决办法(20180724)

    参考了网上很多教程,踩过很多坑,总结一篇,仅供参考: node1 , node2, node3 :其中node1 为主节点,2 3为从节点. 机子内存太小不建议安装测试学习,否则过程很难受 ...说实 ...

  2. 记录一个坑:java.util.zip.ZipException: zip file is empty

    接手一个离职同事的项目,运行起来没问题但是kotlin还用的是 1.3.70版本,这都2021年了,还用这么低版本果断换成1.5.30版本,同步一下没问题,运行~~~~~~  java.util.zi ...

  3. 记录一个坑:mouseleave事件

    今天在做一个弹出式下拉框时遇到了一个BUG,如下图所示,我下拉框中加入一组多选多选框,并且设置当用户的鼠标移出多选框部分的div时,多选框隐藏,这个时候当然是选择使用mouseleave事件来实现最好 ...

  4. mongoose 批量修改字段_记一次脚本批量修改数据库字符集所埋下的一个坑及解决思路...

    概述 前段时间参考网上教程用脚本批量修改了数据库的字符集,过了一天后业务反馈某个功能用不了,检查发现数据库字符类型的字段的默认值和说明全部为空,用实验测试了一下果然脚本存在一些bug,后续因此加班了一 ...

  5. 记录一个坑:ValueError: Colormap spectral is not recognized.

    我按照书上的代码敲上去是这样的. ValueError Traceback (most recent call last) <ipython-input-16-306c0fd67636> ...

  6. 记录一个问题的解决过程

    一.场景复现 改动的是16年左右的React项目,各环境启动脚本如下: 当执行dev脚本将项目运行起来时,发现箭头函数和async同时使用会造成箭头函数内的无法访问并报错如下 二.事故分析思路 最初碰 ...

  7. 记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

    我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也 ...

  8. 记录安装Manjaro踩过的那些坑,解决安装后进入grub 的问题

    记录安装Manjaro踩过的那些坑,解决安装后进入grub 的问题 最完美的一次linux体验 先说自己安装linux的经验,大二的时候最先接触的是Centos和Ubuntu服务器版的,都是在虚拟机中 ...

  9. 再次记录 Visual Studio 2015 CTP 5 的一个坑

    升级到 VS2015 CTP 之后,今天要改项目中的一个东西,然后就不得不把 C# 6.0 改变的语法代码中改了下(之前没改,大约200多个),首先,比如下面示例代码: var fullName = ...

最新文章

  1. IEEE史上首位华人主席,马里兰大学终身教授刘国瑞当选
  2. stm32 堆和栈(stm32 Heap Stack)
  3. UNIX再学习 -- 高级 I/O
  4. C#深入.NET平台的软件系统分层开发
  5. C语言灵魂——算法!
  6. 识别中文_中文场景文字识别大赛官方baseline
  7. 实现微信支付宝收款到账语音提醒
  8. 新手学习selenium路线图(老司机亲手绘制)-学前篇(转上海悠悠)
  9. 2020家用千兆路由器哪款好_企业级千兆路由器哪个牌子好?2020排名
  10. Python量化投资——这个均线择时投资策略,12年只交易24次,比沪深300收益率高700倍
  11. Unity中Combined Mesh (root: scene)的解决方法
  12. 浏览器禁用了cookie怎么办
  13. 1 1 2 3 5 8 java_【Java】一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。...
  14. python笔迹识别_笔迹鉴别(1) —— 实现步骤概述
  15. games101 1-2
  16. Windows下搭建ant+jenkins+jmeter自动化接口测试框架(详细篇)
  17. 差压传感器和差压变送器的区别在哪里
  18. 原SAP全球副总裁邓永富加盟金蝶,担任金蝶集团副总裁
  19. 运行在VMware上的VMware公司
  20. lag和lead 分析函数

热门文章

  1. ssh整合问题总结--使用struts2+Ajax+jquery验证用户名是否已被注册
  2. MSXML解析[转]
  3. Extended WPF Toolkit 新控件介绍
  4. 线性代数同济第六版_线性代数考试内容与课后习题
  5. flutter环境搭建-完整版
  6. eclipse使用git合并_Eclipse中使用git
  7. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
  8. SQLite中的SELECT子句使用通配符
  9. performActionForShortcutItem方法未触发
  10. c语言指针和结构体难点,C语言指针和结构体