40 votes

UIButton de type UIButtonTypeCustom n'affichera pas Title (iPhone)

Je dois avoir oublié quelque chose de tout à fait évident?? mais mon bouton affiche son image et taille correctement, mais je ne peux tout simplement pas obtenir le Titre de le montrer.

Je n'ai vraiment un test simple, le Titre n'a même pas montrer quand je fais ceci:

    CGRect frameBtn = CGRectMake(160.0f, 150.0f, 144.0f, 42.0f);
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:@"left_halfscreen_button.png"] forState:UIControlStateNormal];
    [button setTitle:@"Hello" forState:UIControlStateNormal];
    [button setFrame:frameBtn];
    NSLog(@"Title:%@", [button currentTitle]);
    //prints "Title:Hello
    [self addSubview:button];

J'ai une usine de classe qui génère des boutons personnalisés pour moi et j'ai gâché quelques détails là-haut, j'ai donc déplacé le code ci-dessus directement dans mon UIView, le titre est encore vierge.

Est-ce un bug ou suis-je simplement en manque de quelque chose juste en face de mes yeux.

Merci pour la paire d'yeux supplémentaire:)

90voto

Tuomas Pelkonen Points 5641

L'image annule le titre, vous devez faire de l'image une image d'arrière-plan pour afficher le titre.

[button setBackgroundImage: [UIImage imageNamed: @ "left_halfscreen_button.png"] 
        forState: UIControlStateNormal];

28voto

Stefan Gritzka Points 261

Je viens d'avoir un problème assez similaire ... Il suffit de définir la couleur du titre, je suppose que l'actuel est blanc;)

 [button setTitleColor: [UIColor blackColor] pourState: UIControlStateNormal]; 

13voto

JapCon Points 191

J'ai trouvé le problème!

Ce n'est pas l'image qui remplace le titre. Il est en train d'être repoussé par l'image.

Essayez d'utiliser ceci:

[btn setTitleEdgeInsets:UIEdgeInsetsMake(0.0, -img.size.width, 0.0, 0.0 )];

J'espère que ça aide!

3voto

János Points 1512

Lorsque vous utilisez UIButton , le bouton utilise une taille intégrée pour son cadre.

Vous devriez définir le cadre:

 button.frame = CGRectMake(0, 0, width, height);
 

ou même mieux et confortable:

 [button sizeToFit];
 

0voto

testing Points 2531

J'ai eu un problème similaire que le titre n'a pas été montré. J'ai oublié de définir la propriété frame:

 //set the position of the button
button.frame = CGRectMake(100, 170, 100, 30);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X