2013-01-24 30 views
5

Vedete che sto creando una barra di navigazione completamente personalizzata e quando creo il pulsante Indietro non rimane nel posto giusto come potete vedere sotto il codice.Come cambio la posizione del pulsante Indietro su iOS?

Ecco il mio codice per l'applicazione

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if(self.navigationController.viewControllers.count > 1) { 
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [backButton setTitle:@"" forState:UIControlStateNormal]; 
    [backButton setBackgroundImage:[UIImage imageNamed:@"backButton.png"] forState:UIControlStateNormal]; 
    [backButton addTarget:self action:@selector(didTapBackButton:) forControlEvents:UIControlEventTouchUpInside]; 
    backButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 45.0f); 
    UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

    self.navigationItem.leftBarButtonItem = backButtonItem; 
} 

}

Pic http://s8.postimage.org/k5faqz0jp/Screen_Shot_2013_01_24_at_5_30_10_PM.png

risposta

6

Penso che sia possibile modificare contentEdgeInsets per rendere la posizione del pulsante.

Qualcosa di simile a questo:

[setContentEdgeInsets BackButton: UIEdgeInsetsMake (5, 0, -5, 0)];

provengono da UIButton Class Reference

contentEdgeInsets

L'inserto o margini fin dall'inizio, per il rettangolo che circonda tutti i contenuti del pulsante.

@property (nonatomic) UIEdgeInsets contentEdgeInsets

DiscussionUse questa proprietà per ridimensionare e riposizionare il rettangolo di disegno efficace per il contenuto pulsante. Il contenuto comprende l'immagine del pulsante e il titolo del pulsante. È possibile specificare un valore diverso per ciascuno dei quattro riquadri (superiore, sinistro, inferiore, destro). Un valore positivo riduce, o inserisce, quel bordo spostandolo più vicino al centro del pulsante. Un valore negativo espande, o supera, quel bordo. Utilizzare la funzione UIEdgeInsetsMake per creare un valore per questa proprietà. Il valore predefinito è UIEdgeInsetsZero.

+0

Grazie per la tua risposta! – Prad

0

Beh, non si può cambiare, bisogna nasconderlo.

Guardate questa pagina postato qui:

http://rafaelsteil.com/2011/07/23/crappy-ios-apis-uinavigationcontroller/

Can't change back button title but I can hide it

+0

Anche se questo può tecnicamente rispondere alla domanda, [sarebbe preferibile] (http://meta.stackexchange.com/q/8259) per voi per riassumere il materiale collegato qui. Altrimenti, la risposta rischia di perdere la sua utilità a causa del link rot. –

+0

No so come rimuovere il titolo del pulsante Indietro, basta cambiare la posizione. E 'possibile con un collega – Prad

0

hai bisogno di nascondere NavigationBar prima ...

[self.navigationController setNavigationBarHidden:YES animated:NO]; 

quindi creare su misura UIButton ..

UIButton *btn1=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn1 setFrame:CGRectMake(10, 0, 60, 40)];// Frame u want 

    [btn1 setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal]; 
    [btn1 addTarget:self action:@selector(Click_backward:) forControlEvents: UIControlEventTouchUpInside]; 
btn1.tintColor=[UIColor purpleColor]; 
    [self.view addSubview:btn1]; 
+0

Ciao amico ho aggiunto quattro pulsante di navigazione utilizzando array .. il suo funzionamento fine, ma il pulsante indicatore indietro hidded.how per rettificare questo. – vijay

2

È possibile eseguire il rendering di un'immagine più grande con una spaziatura a sinistra.

UIImage *origImage = [UIImage imageNamed:@"button-thin-hamburger.png"]; 
UIGraphicsBeginImageContextWithOptions(CGSizeMake(origImage.size.width + 10, origImage.size.height), NO, 0.0); 
[origImage drawInRect:CGRectMake(10, 0, origImage.size.width, origImage.size.height)]; 
UIImage *buttonImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"" 
                   style:UIBarButtonItemStylePlain 
                   target:nil 
                   action:nil]; 
self.navigationItem.backBarButtonItem = backButton; 

[[UINavigationBar appearance] setBackIndicatorImage:buttonImage]; 
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:buttonImage]; 
Problemi correlati