setAttributedText不能在UIButton上运行?

时间:2016-03-23 19:22:04

标签: ios objective-c uibutton

我正在尝试在UIButton上设置属性字符串标题,但它似乎无法在这里工作。

[self.emailSignInButton.titleLabel setAttributedText:[[NSAttributedString alloc] initWithString:NSLocalizedString(@"LOGIN_WITH_EMAIL", nil) attributes:@{ NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}]];

虽然这完全正常。

[self.emailSignInButton.titleLabel setText:NSLocalizedString(@"LOGIN_WITH_EMAIL", nil)];

奇怪的是另一个按钮文本与归属文本很好。 例如

[self.emailSignupButton.titleLabel setAttributedText:[[NSAttributedString alloc] initWithString:NSLocalizedString(@"CREATE_ACCOUNT_WITH_EMAIL", nil) attributes:@{ NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}]]`;

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:2)

您需要设置按钮状态的文本。 UIButton可以有几种不同的状态。

  • 正常
  • 突出显示的
  • 禁用
  • 选择的
  • 聚焦
  • 应用
  • 保留

您很可能需要普通,这会为所有情况设置默认标题。

  

<强>的UIButton

     
      
  • setAttributedTitle:forState:
  •   
     

设置用于指定状态的样式标题。

以下是您的代码

的示例
NSAttributedString *string = [[NSAttributedString alloc] initWithString:NSLocalizedString(@"LOGIN_WITH_EMAIL", nil) 
                                                            attributes:@{ NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}]

[self.emailSignInButton setAttributedTitle:string forState:UIControlStateNormal];

的引用:

UIControlState

UIButton - setAttributedTitle:forState: