我在使用之前更改了UIButton
s的标题:
- (void)setTitle:(NSString *)title forState:(UIControlState)state
但I've run into a situation我使用的UIButton
有一个多行标题,只有在IB中从“普通”更改为“归属”时才会正确居中。以这种方式更改标题时,通常的setTitle: forState:
方法不再更新按钮。
如何更改UIButton
的归因标题?
为了澄清,所以你不要假设我只是犯了一个愚蠢的错误,我使用调试器来查看UIButton
的属性并记录
- (NSString *)titleForState:(UIControlState)state
使用后
- (void)setTitle:(NSString *)title forState:(UIControlState)state
设置它返回刚刚设置的值。问题是只要标题在IB中设置为归属,它就不会改变按钮的外观。只需将其更改为 plain ,我的代码就可以正常工作。但这不是上面链接中描述的解决方案。
答案 0 :(得分:58)
归属头衔通过
获得- (NSAttributedString *)attributedTitleForState:(UIControlState)state
并通过
设置- (void)setAttributedTitle:(NSAttributedString *)title forState:(UIControlState)state
格式化NSAttributedString
对象有点复杂,但将其设置为nil
将清除标题,这就是我需要的内容。
答案 1 :(得分:9)
您是否在视图控制器类中将按钮指定为IBOutlet,并且它是否正确连接为Interface Builder中的插座(从新引用插座拖动到文件所有者并选择您的UIButton对象)?当我看到这些症状时,这通常是我遇到的问题
.specify first -
@property(non atomic,strong)IBOutlet UIButton *mybutton;
然后
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
答案 2 :(得分:4)
这是一个
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Title" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];
无需在- (void)setTitle:(NSString *)title
答案 3 :(得分:1)
Swift - 对于按钮标题中的红色删除线字体:
let attributedStringForInvalid = NSAttributedString(string: "I'm Invalid!", attributes: [
NSStrikethroughStyleAttributeName: true,
NSForegroundColorAttributeName: UIColor.redColor()
])
myButton.setAttributedTitle(attributedStringForInvalid, forState: UIControlState.Normal)
答案 4 :(得分:1)
我必须使用以下4行来显示属性字体。 在IB中,标题设置为简单而不归因。
// Get the library font
UIFont *termsFont = [MTHGAppearanceController defaultFontOfSize:[MTHGAppearanceController defaultButtonFontSizeForDevice]];
// Set the font attributes required, using our librarby function for setting the colour
NSDictionary *fontAttributes = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle),NSBackgroundColorAttributeName: [UIColor clearColor], NSFontAttributeName: termsFont, NSForegroundColorAttributeName:[UIColor mthg_color255WithRed:128.0f green:128.0f blue:128.0f alpha:1.0f]};
// Configure the text we want displayed using the font set above
NSAttributedString *termsString = [[NSAttributedString alloc]initWithString:@"Terms" attributes:fontAttributes];
// Now finally display the text in the required font
[self.termsButtonOutlet setAttributedTitle:termsString forState:UIControlStateNormal];