2010-06-11 18 views
8

Todo acerca de este UIButton se ve muy bien, excepto el texto que se supone que debe estar en él. NSLog demuestra que el texto está en el lugar correcto. ¿Lo que da?¿Por qué este UIButton no muestra su etiqueta de texto?

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]; 

Respuesta

20

Hay un conjunto de API en UIButton que se deben usar para cambiar esas propiedades.

titleLabel puede y será cambiado por UIButton internamente.

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

siempre se debe establecer estas propiedades a través de estos métodos (cuando esté disponible) en lugar de tocar la TitleLabel directamente. Para las fuentes, puede cambiarlo directamente en titleLabel, ya que no proporcionan un método en UIButton.

+0

Bingo. ¡Gracias! –

Cuestiones relacionadas