2012-06-04 20 views
7

Sto personalizzando il pulsante Indietro nella barra di navigazione utilizzando il proxy di aspetto, impostando anche gli attributi di immagine e testo. Tutto funziona bene, ma il testo nel pulsante Indietro non è allineato al centro.Barra di navigazione Pulsante Indietro, testo non centrale originale

Ecco il mio codice.

UIBarButtonItem *backButton = [[[UIBarButtonItem alloc] initWithTitle:title style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease]; 
UIImage *buttonBack32 = [[UIImage imageNamed:@"NavigationBackButton"] 
         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 5)]; 

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack32 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setTitleTextAttributes: 
[NSDictionary dictionaryWithObjectsAndKeys: 
     [UIColor whiteColor], 
     UITextAttributeTextColor, 
     [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8], 
     UITextAttributeTextShadowColor, 
     [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], 
     UITextAttributeTextShadowOffset, 
    [UIFont fontWithName:@"xxx" size:16.0], 
    UITextAttributeFont, 
    nil] 
              forState:UIControlStateNormal]; 
self.navigationItem.backBarButtonItem = backButton; 

Se si imposta la dimensione del carattere "0.0", il testo diventa di dimensioni troppo ridotte e non è centrato.

Grazie in anticipo per qualsiasi aiuto.

+0

ti riferisci allineamento verticale o allineamento orizzontale? –

+0

penso che provare questo potrebbe non essere d'aiuto, ma io faccio questa cosa in textview e anche lable ma non in BarButton quindi cercherò semplicemente di postare la risposta [[UIBarButtonItem appearance] setTextAlignment: UITextAlignmentCenter]; :) –

+0

ParasJoshi: non ha funzionato. – fibnochi

risposta

17

È possibile utilizzare il setTitlePositionAdjustment: forBarMetrics: metodo per impostare il titolo di offset come richiesto. Per esempio:

[[UIBarButtonItem appearance] setTitlePositionAdjustment:UIOffsetMake(0.0f, 5.0f) forBarMetrics:UIBarMetricsDefault]; 
+0

ha lavorato per me (y) –

-4
You can use this : 

UIView* leftContainer = [[UIView alloc] initWithFrame:CGRectMake(0.0, 4.0, 70.0, 44.0)]; 
UIImage *profileImg = [UIImage imageNamed:@"account-btn.png"]; 
UIButton *profilebutton = [UIButton buttonWithType:UIButtonTypeCustom]; 
profilebutton.frame = CGRectMake(0.0, 7.0, 70.0, 30.0); 
[profilebutton setImage:profileImg forState:UIControlStateNormal]; 
[profilebutton addTarget:self action:@selector(profileBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 
[leftContainer addSubview:profilebutton]; 

UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithCustomView:leftContainer]; 
self.navigationItem.leftBarButtonItem = item; 

[leftContainer release]; 
[item release]; 
0

Per regolare il testo fino ho dovuto usare questo:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -1.5) forBarMetrics:UIBarMetricsDefault]; 
Problemi correlati