iOS UIButton setTitle与setAttributedTitle

今天遇到个问题,在此记录下来,也记录下现在的解决办法:

我需要在同一个UIButton上根据条件先后设置不带属性的title,即用setTitle来设置标题,后来条件变化需要显示带属性的标题(例如下划线,或者字体多种颜色等等)使用setAttributedTitle,后来条件再次改变需要显示不带属性的标题,在此我重新使用setTitle来重新设置。

[stateBtn setTitle:@"456" forState:UIControlStateNormal];//-------1
 NSMutableAttributedString *attriString = [[NSMutableAttributedString alloc] initWithString:@"123"];
[attriString addAttribute:NSForegroundColorAttributeName
                     value:[UIColor redColor]
                     range:NSMakeRange(4, 2)];
 [stateBtn setAttributedTitle:attriString forState:UIControlStateNormal];//---------2
 attriString = nil;
 [stateBtn setTitle:@"789" forState:UIControlStateNormal];//----------3
在标记1处,按钮成功显示“456”;标记2处,按钮成功显示“123”,但是标记3时,按钮并不能切换到“789”;

这是为什么呢?

我查阅了相关文档,加上自己的推测,当对同一个按钮同时使用setTitle与setAttributedTitle,按钮优先选择使用setAttributedTitle,所以导致在3处无法切换回。

最后我的处理办法:将所有在setAttributedTitle后的setTitle,替换为setAttributedTitle,一切又恢复正常!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值