2009-11-11 4 views
0

J'utilise un UIButton dans mon application. Ce titre de bouton est affiché dynamiquement selon le choix de l'utilisateur. Maintenant, je dois redimensionner la largeur du bouton selon le contenu du titre. Je calcule la longueur de la chaîne et l'affecte à la largeur du bouton. Le bouton est redimensionné selon le titre, mais le problème est le suivant: 1. Si le titre avec un grand contenu est d'abord affiché et après que si un titre avec un petit contenu est indiqué signifie que le bouton est écrasé il doesn Ne retirez pas la valeur précédemment construite. 2. il semble que l'un des boutons se chevauche sur l'autre.UIButton à redimensionner

+0

Fonctionne-t-elle? – Francescu

Répondre

0

Pour moi, il semble que vous ne changiez pas la largeur du bouton, mais vous ajoutez un autre bouton. Ajoutez-vous les boutons dans le code? Si oui, pourriez-vous poster le code? En général, si vous souhaitez ajouter un autre bouton, il est préférable de lui donner une étiquette et de supprimer la vue avec cette étiquette (c'est-à-dire l'ancien bouton) de la vue précédente avant d'ajouter la nouvelle.

Cela devrait ressembler à ceci (à partir du haut de ma tête):

UIButton * button = [[[UIButton alloc] init] autorelease]; 
button.tag = 100; 
/* ...set up the button the way you would normally do... */ 

// remove old button 
[[targetView viewWithTag: 100] removeFromSuperview]; 

// add new button 
[targetView addSubview: button]; 

La balise est un entier arbitraire utilisé pour identifier une vue. Il serait préférable de #define vos étiquettes utilisées dans un endroit central.

2

En supposant, vous avez votre bouton d'attribut dans votre classe

-(void)changeTitleButtonWithValue:(NSString *)value 
{ 
//get the value length (- (CGSize)sizeWithFont:(UIFont *)font) 
size = [value sizeWithFont:yourFont]; 
self.button.frame = CGRectMake(x, y, size.width,size.height); 
[self.button setTitle:value forState:UIControlStateNormal]; 
[self.button setTitle:value forState:UIControlStateHighlighted]; 

} 

Edit: vous avez plusieurs façons d'obtenir votre bouton

  • Votre créer de Interface Builder
    • Ajoutez en tant que point de vente
    • Définissez-le comme tag et getIt avec UIButton * myButton = (UIButton *) [self.view viewForTag : YOURTAG];
  • vous le créez à partir du code
    • Instance Attribut
    • Même chose avec étiquette mais quand vous créez: myButton.tag = YOURTAG;