2010-02-15 11 views
2

dans le bouton suivant est une adresse a montré. Mon problème est que les adresses sont très longues et comment puis-je obtenir entre les deux variables dans le titre du bouton une ligne de rupture ??Breakline dans le titre UIButton

NSString *sitz = map.kordinate.herkunft; 
NSString *strasse = map.kordinate.strasse; 
NSString *strasseMitKomma = [strasse stringByAppendingString:@","]; 
NSString *fertigesSitzFeld = [strasseMitKomma stringByAppendingString:sitz]; 
UIButton *firmensitz = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

la ligne de rabattement doit être comprise entre strasseMitKomma et Sitz ??

Merci d'aider

Répondre

9

Vous devez configurer le UILabel à l'intérieur du UIButton pour soutenir plusieurs lignes.
Vous pouvez le faire comme ceci:

NSString *address; 

    address = [NSString stringWithFormat:@"%@,\n%@", @"street name", @"city name"]; // Note the \n after the comma, that will give you a new line 

    addressButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 


    [addressButton.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; // Enabling multiple line in a UIButton by setting the line break mode 
    [addressButton.titleLabel setTextAlignment:UITextAlignmentCenter]; 

    [addressButton setTitle:address forState:UIControlStateNormal]; 

Par ailleurs, vous n'avez pas besoin tant de variables NSString. Vous auriez pu mettre le résultat de la nouvelle chaîne dans la variable NSString que vous utilisiez déjà.
Jetez un oeil à la méthode stringWithFormat dans la première ligne de ma réponse. Lisez le NSString documentation pour plus de détails.

+4

UILineBreakModeCharacterWrap est obsolète (iOS 6.0). Utilisez plutôt NSLineBreakByCharWrapping. – Arjan

0

Cela a fonctionné sur iOS9.

[_butNoReceipt.titleLabel setLineBreakMode:NSLineBreakByCharWrapping]; 
[_butNoReceipt.titleLabel setTextAlignment:NSTextAlignmentCenter]; 
[_butNoReceipt setTitle:btnTest forState:UIControlStateNormal];