2013-09-22 19 views
6

Dal dox:come creare un'immagine di una maschera personalizzata per i pulsanti indietro nel iOS7

  • Se si desidera utilizzare un'immagine personalizzata per sostituire il predefinito chevron, è inoltre necessario creare un'immagine maschera personalizzata . iOS 7 utilizza la maschera su per far apparire il titolo della schermata precedente o scomparire in-the chevron durante le transizioni di navigazione. Per informazioni sulle proprietà che controllano il pulsante Indietro e l'immagine maschera, vedere Riferimento di classe UINavigationBar.

In UINavigationBar Classe Riferimento:

backIndicatorImage

L'immagine mostrata accanto al pulsante Indietro. @property (nonatomic, mantenere) UIImage * backIndicatorImage Discussione

Se si desidera personalizzare l'immagine indicatore di schiena, è necessario impostare anche backIndicatorTransitionMaskImage. Disponibilità

Available in iOS 7.0 and later. 

Vedere anche

@property backIndicatorTransitionMaskImage 

dichiarata In UINavigationBar.h backIndicatorTransitionMaskImage

L'immagine utilizzata come maschera per il contenuto durante push e pop transizioni. @property (nonatomic, mantenere) UIImage * backIndicatorTransitionMaskImage Discussione

Se si desidera personalizzare l'immagine indicatore di schiena, è necessario impostare anche backIndicatorImage. Disponibilità

Available in iOS 7.0 and later. 

Vedere anche

@property backIndicatorImage 

dichiarata in UINavigationBar.h

Scusa la mia ignoranza, ma le informazioni fornite non mi dice molto a tutti.

Esiste una classe Cocoa che creerà una maschera con l'immagine desiderata? O devo fornire il frame, gli archi e così via? O faccio solo un contorno nero della mia immagine in un editor?

+3

"Personalizzazione Aspetto di App per iOS 7" sessione dal WWDC 2013, spiega il significato di entrambi i parametri. – macbirdie

risposta

3

Penso che questo sia quello che stai cercando per

self.navigationController.navigationBar.backIndicatorImage = [UIImage yourImage]; 
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage yourImage]; 
+0

Questo non è difficile da capire (la documentazione lo menziona) ma come dovrei fornire l'immagine? Funziona con trasparenza o bianco/nero, ecc. Ho provato un PNG e agisce semplicemente come un rettangolo bianco che copre il contenuto: http://cl.ly/image/0N1V2L181i3t Modifica: la risposta di kowal cita il soluzione –

+0

Vedi sotto, risposta di Kowal. La transitionMaskImage come mostrato in questo esempio dovrebbe essere diversa dall'immagine dell'indicatore e non la stessa, altrimenti il ​​testo apparirà ritagliato durante le transizioni. – strangetimes

-2

questo è quello che ho fatto e funziona perfettamente

UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; 
[backButton setBackgroundImage:[UIImage imageNamed:@"backbutton.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *barBackButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
[backButton addTarget:self action:@selector(popViewController) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = barBackButtonItem; 
self.navigationItem.hidesBackButton = YES; 

e "popViewController" assomiglia a questo

-(void)popViewController{ 
[self.navigationController popViewControllerAnimated:YES]; 

}

33

backIndicatorTransitionMaskImage è la maschera di visibilità.

Nell'immagine maschera:

  • i pixel con lo alpha = 0 saranno copre titolo mobile durante le transizioni di navigazione;
  • i pixel con alpha = 1 saranno trasparenti per il titolo in movimento durante le transizioni di navigazione.

Quindi, se si desidera fornire lo stesso comportamento visibilità nell'indicatore posteriore nativa, è possibile utilizzare le immagini (UTF-8 segni) simili a quelle qui di seguito:

  1. immagine indicatore Indietro: 〱
  2. Indietro indicatore maschera: ◀ (solo il testo sotto la parte nera sarà visibile)
+1

Questa dovrebbe essere la risposta accettata. – strangetimes