web-dev-qa-db-fra.com

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

J'ai dû oublier quelque chose de complètement évident ?? mais mon bouton affiche correctement son image et sa taille, mais je ne parviens tout simplement pas à faire apparaître le titre.

J'ai fait un test très simple, le titre ne s'affiche même pas lorsque 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 classe d'usine qui génère des boutons personnalisés pour moi et je pensais avoir gâché quelques détails là-haut. J'ai donc déplacé le code ci-dessus directement dans ma UIView, le titre est toujours vide.

Est-ce un bug ou est-ce que je manque simplement quelque chose juste devant mes yeux?.

Merci pour les yeux supplémentaires :)

40
RickiG

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]; 
90
Tuomas Pelkonen

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];
28
Stefan Gritzka

Lorsque vous utilisez UIButton, button 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];
3
János

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);
0
testing