2012-08-29 2 views
0

Je crée un UIButton personnalisé avec 2 images, mais pour une raison quelconque, le titre n'apparaît pas, le bouton s'affiche correctement, mais sans aucun titre.UIButton étiquette non visible

_button = [UIButton buttonWithType:UIButtonTypeCustom]; 
_button.frame = CGRectMake(10, 250, 300, 43); 
[_button addTarget:self action:@selector(loginClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[_button setImage:[UIImage imageWithContentsOfFile:normalButtonImg] forState:UIControlStateNormal]; 
[_button setImage:[UIImage imageWithContentsOfFile:hoverButtonImg] forState:UIControlStateSelected]; 
[_button setTitle:@"Login" forState:UIControlStateNormal]; 
[_button setTitle:@"Login" forState:UIControlStateHighlighted]; 
[_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[_button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; 
[self.view addSubview:_button]; 

Répondre

4

Ces deux lignes:

[_button setImage:[UIImage imageWithContentsOfFile:normalButtonImg] forState:UIControlStateNormal]; 
[_button setImage:[UIImage imageWithContentsOfFile:hoverButtonImg] forState:UIControlStateSelected]; 

devrait être

[_button setBackgroundImage:[UIImage imageWithContentsOfFile:normalButtonImg] forState:UIControlStateNormal]; 
[_button setBackgroundImage:[UIImage imageWithContentsOfFile:hoverButtonImg] forState:UIControlStateSelected]; 

Explication: si une image de premier plan est défini pour UIButton, l'image est placée au-dessus du titre, il pourrait se cacher il. Si vous voulez une image et un titre à afficher, vous devez définir une image de fond .

+0

pas exactement le bon choix le mot _ignore_. parce que le titre ne sera pas ignoré. le 'image' pousse juste le' title' en dehors du bouton. Lorsque vous utilisez une image plus petite que la taille du bouton, vous voyez le 'title' poussé dans la bonne direction par le' image'. – holex

+0

Aha l'a eu, cela fonctionne parfaitement! –

0

Lorsque vous définissez l'image, cela remplace le titre. Si vous pouvez créer une image de fond pour votre image, cela fonctionnera. Sinon, vous aurez besoin de créer une image composite pour le bouton en créant essentiellement une nouvelle image qui est votre image souhaitée avec le titre dessiné sur elle.