我有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];
答案 0 :(得分:4)
任何给定controlState的attributesTitle都会覆盖该controlState的标题。因此,一旦为UIControlStateNormal设置了attributesTitle(例如),那么setTitle似乎不会对该controlState进行任何更改,除非您将该controlState的attributesTitle设置为nil。