在setAttributedTitle之后无法更改UIButton标题

时间:2015-12-30 02:41:10

标签: ios objective-c uibutton

我有UIButton,我想为UIButton标题的一部分制作颜色,因此我创建NSMutableAttributedString然后setAttributedTitle按钮。

之后,颜色正常但我无法更改UIButton

的标题

如果我不使用setAttributedTitle(通过评论[self.btnFanLevel setAttributedTitle:text forState:UIControlStateNormal]);行),UIButton标题可以更改

以下是我用来更改UIButton标题颜色和文字的功能

-(void)changeFanLevel: (NSString *) fanLevelTitle withColor:(UIColor *) color{
    NSLog(@"fanLevelTitle = %@", fanLevelTitle);
    [self.btnFanLevel setTitle:fanLevelTitle forState:UIControlStateNormal];

    NSMutableAttributedString *text =
    [[NSMutableAttributedString alloc]
     initWithAttributedString: self.btnFanLevel.titleLabel.attributedText];

    NSLog(@"text = %@", self.btnFanLevel.titleLabel.attributedText);

    [text addAttribute:NSForegroundColorAttributeName
                 value:color
                 range:NSMakeRange(10, 3)];

    [self.btnFanLevel setAttributedTitle:text forState:UIControlStateNormal];
}

我做错了吗?任何帮助将不胜感激。

更新
我在为UIButton

设置标题之前添加此行来解决我的问题

[self.btnFanLevel setAttributedTitle:nil forState:UIControlStateNormal];

1 个答案:

答案 0 :(得分:4)

任何给定controlState的attributesTitle都会覆盖该controlState的标题。因此,一旦为UIControlStateNormal设置了attributesTitle(例如),那么setTitle似乎不会对该controlState进行任何更改,除非您将该controlState的attributesTitle设置为nil。