2010-03-24 20 views
10

Sto mettendo un'etichetta su una UIToolbar (per questo suggerimento: Adding a UILabel to a UIToolbar).Posso centrare un oggetto UIToolbar?

Ma la barra degli strumenti ha un pulsante sul lato sinistro, e gli spazi così flessibili gettano l'etichetta dal centro, che è dove mi piacerebbe che fosse. Posso in qualche modo centrare questa voce della barra degli strumenti in modo che rimanga centrata nella barra degli strumenti?

(già provato bilanciare il pulsante con uno spazio fisso fittizio, niente da fare.)

Grazie!

risposta

3

Il modo più semplice sarebbe di mettere l'etichetta sopra la nella barra, nella sua vista principale, e giustificarla lì.

+0

Grazie, Ben, quello era il mio piano B. :) –

+0

Il metodo di EricS è superiore e molto più facile da implementare. – titaniumdecoy

+1

Il metodo di EricS è "statico" e non funziona quando si cambia orientamento – Undolog

35

Aggiungi uno spazio flessibile a sinistra e a destra dell'elemento centrale, come hai fatto tu. Quindi aggiungi un elemento di spazio fisso alla fine e imposta la larghezza su qualunque sia la larghezza del pulsante sinistro - da qualche parte intorno a 28 pixel.

UIBarButtonItem *fixedItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL] autorelease]; 
fixedItem.width = 28; 
+7

Questa dovrebbe essere la risposta accettata. – titaniumdecoy

+2

Questo presuppone che il font di sistema non cambierà mai (ha più volte) e l'utente non imposterà mai un font di dimensioni diverse. Ignora anche le localizzazioni del titolo del tuo pulsante con larghezze diverse. –

6

Per centrare un testo/titolo su una barra degli strumenti è possibile utilizzare un semplice UILabel come vedi sotto:

UILabel *labelTitle = [[UILabel alloc] init]; 
labelTitle.font =[UIFont fontWithName:@"Helvetica-Bold" size:18]; 
labelTitle.backgroundColor = [UIColor clearColor]; 
labelTitle.textAlignment = UITextAlignmentCenter; 
labelTitle.userInteractionEnabled = NO; 
labelTitle.text = @"Your Title"; 
[labelTitle sizeToFit]; 
CGRect labelTitleFrame = labelTitle.frame; 
labelTitleFrame.size.width = self.toolbar.bounds.size.width; 
labelTitleFrame.origin.y = (self.toolbar.bounds.size.height - labelTitleFrame.size.height)/2; 
labelTitle.frame = labelTitleFrame; 
labelTitle.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
// Just add UILabel like UIToolBar's subview 
[self.toolbar addSubview:labelTitle]; 
[labelTitle release]; 
labelTitle = nil; 
+0

Questo metodo funziona correttamente quando si cambia orientamento e quando ci sono pulsanti barra sinistra o destra – Undolog

0

Sì possiamo centrare un elemento barra degli strumenti appena messo due spazio flessibile nella barra degli strumenti, come:

UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

toolbar.items = [NSArray arrayWithObjects:loginButton,flexibaleSpaceBarButton,toolBarLabel,flexibaleSpaceBarButton, nil];