iOS UIButton setTitle与setAttributedTitle

来源:互联网 发布:找一个程序员女朋友 编辑:程序博客网 时间:2024/05/21 21:29

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

我需要在同一个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,一切又恢复正常!

0 0