2012-01-19 10 views
9

"In riproduzione" è in Una riga in UIBarButtonItem. Devo metterlo in due linee, come "ora" è ay alto e "Riproduzione" è in bottom.I hanno scritto la seguente riga di codice: -Come possiamo inserire due righe in UIBarButtonItem nella barra di navigazione

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 

           initWithTitle:@"Now Playing" 

           style:UIBarButtonItemStyleBordered 

           target:self 

           action:@selector(flipView)]; 


    self.navigationItem.rightBarButtonItem = flipButton; 

quindi voglio pu linea di pausa in mezzo "Now Playing". Quindi, per favore aiutami.

+0

Come su "Now \ n Playing"? – barley

+0

Siamo spiacenti, non funziona. –

+0

Ok. Sembra che sia un duplicato. Ma sembra che non ci sia un modo semplice ... http://stackoverflow.com/questions/2614098/how-can-i-make-the-text-of-a-uibarbuttonitem-wrap-to-two-lines – barley

risposta

4
- (void)createCustomRightBarButton_ 
{ 
    UILabel * addCustomLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 64, 25)] autorelease]; 
    addCustomLabel.text [email protected]"Now\nPlaying"; 
    addCustomLabel.textColor = [UIColor whiteColor]; 
    addCustomLabel.font = [UIFont boldSystemFontOfSize:11]; 
    addCustomLabel.numberOfLines = 2; 
    addCustomLabel.backgroundColor = [UIColor clearColor]; 
    addCustomLabel.textAlignment = UITextAlignmentCenter; 

    CGSize size = addCustomLabel.bounds.size; 

    UIGraphicsBeginImageContext(size);  
    CGContextRef context = UIGraphicsGetCurrentContext();  
    [addCustomLabel.layer renderInContext: context]; 
    CGImageRef imageRef = CGBitmapContextCreateImage(context); 
    UIImage * img = [UIImage imageWithCGImage: imageRef]; 
    CGImageRelease(imageRef); 
    CGContextRelease(context); 

    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:img 
                      style:UIBarButtonItemStyleBordered 
                      target:self 
                      action:@selector(flipView)] 
               autorelease]; 
} 
+0

I trovato che textColor è stato ignorato e il blu predefinito veniva sempre applicato dall'elemento di navigazione. Se si desidera cambiare il colore, impostare il TintColor di UIBarButtonItem. – Sky

+0

Soprattutto sui dispositivi più recenti, se si copia/incolla questo codice si otterrà un testo sfocato. Per aggirare questo problema è sufficiente aumentare le dimensioni del font/frame, quindi ridimensionare il costruttore di UIImage. – Sky

0

È possibile ospitare un UIButton come CustomView all'interno del pulsante della barra (o impostare la voce pulsante della barra CustomView o è possibile trascinare uno direttamente sulla parte superiore del UIBarButtonItem), collegarlo come una presa di corrente, quindi fare;

-(void) viewDidLoad 
{ 
    //... 
    self.customButton.titleLabel.numberOfLines = 2; 
    self.customButton.suggestionsButton.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
    self.customButton.suggestionsButton.titleLabel.textAlignment = UITextAlignmentCenter; 
} 

che nel mio caso diventa

enter image description here

9

Sì, è possibile. È abbastanza semplice da fare. Crea un pulsante multilinea e usalo. Il "trucco" è di impostare la proprietà titleLabel numberOfLines in modo che piaccia le multilinea.

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.titleLabel.numberOfLines = 0; 
[button setTitle:NSLocalizedString(@"Now\nPlaying", nil) forState:UIControlStateNormal]; 
[button sizeToFit]; 

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

Quando si specifica un tipo di pulsante di costume che si aspetta di configurare tutto ... stato selezionato, ecc che non è mostrato qui per mantenere la risposta focalizzata al problema a portata di mano.

1

enter image description here enter image description here

creo 2 immagini PNG da solo, e si guarda bene.

UIImage *img = [UIImage imageNamed:@"nowplaying.png"]; 
UIBarButtonItem *nowPlayingButtonItem = [[[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStyleBordered target:delegate action:@selector(presentNowPlayingMovie)] autorelease]; 
Problemi correlati