为什么这个UIButton没有显示其文本标签?

时间:2010-06-11 12:58:39

标签: iphone cocoa-touch uibutton

关于这个UIButton的一切都很好,除了应该在它上面的文本。 NSLog表明文本位于正确的位置。是什么给了什么?

UIButton *newTagButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[newTagButton addTarget:self action:@selector(showNewTagField) forControlEvents:UIControlEventTouchUpInside];
newTagButton.titleLabel.text = @"+ New Tag";
NSLog(@"Just set button label to %@", newTagButton.titleLabel.text);
newTagButton.titleLabel.font = [UIFont systemFontOfSize:17];
newTagButton.titleLabel.textColor = [UIColor redColor];
CGSize addtextsize = [newTagButton.titleLabel.text sizeWithFont:[UIFont systemFontOfSize:17]];
CGSize buttonsize = { (addtextsize.width + 20), (addtextsize.height * 1.2) };
newTagButton.frame = CGRectMake(x, y, buttonsize.width, buttonsize.height);
[self.mainView addSubview:newTagButton];

1 个答案:

答案 0 :(得分:20)

UIButton上有一组API应该用于更改这些属性。

titleLabel可以并且将在内部由UIButton更改。

[button setTitle:title forState:state];
[button setTitleColor:color forState:state];
[button setTitleShadowColor:color forState:state];

您应始终通过这些方法(如果可用)设置这些属性,而不是直接触摸titleLabel。对于字体,您可以直接在titleLabel上更改它,因为它们不在UIButton上提供方法。