今天遇到个问题,在此记录下来,也记录下现在的解决办法:
我需要在同一个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,一切又恢复正常!