2013-10-24 4 views
18

setFinishedSelectedImage:withFinishedUnselectedImage: obsoleto in iOS7. Apple recommends per utilizzare setter di image e selectedImage con UIImageRenderingModeAlwaysOriginal invece. Non riesco a trovare alcun esempio di come utilizzare UIImageRenderingModeAlwaysOriginal. Quindi la domanda è molto semplice: come impostare le immagini per UITabBarItem in iOS7?UITabBarItem setFinishedSelectedImage: deprecato in iOS7

+0

Partenza 2013 WWDC video "Novità di Cocoa Touch". Penso che sia spiegato in quel video. – borrrden

risposta

55

Se si sta tentando di ottenere la visualizzazione dell'immagine reale su UITabBar, utilizzare il seguente codice.

[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

e se si desidera visualizzare l'immagine nello stato originale per il selezionato quindi utilizzare il seguente

[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

questi due sono un'alternativa al

setFinishedSelectedImage: withFinishedUnselectedImage: 
+1

+1 funziona perfettamente. Questa soluzione merita più attenzione rispetto all'iniziativa InitWithTitle IDE consigliata: image: selectedImage: in sostituzione. – justinkoh

6

Il setFinishedSelectedImage è deprecato perché Apple vuole dirigere le interfacce verso l'uso delle immagini del modello e il colore che si seleziona (o il blu predefinito.) Così, il facile predefinito fa gli elementi della barra delle schede in questo modo.

Se è necessario utilizzare ancora l'immagine Icona come progettato, l'immagine viene creata con la modalità di rendering per Sempre originale. Come:

[[UIImage imageNamed:@"YourIcon.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]; 

Per impostare l'icona è necessario per ottenere il tabBarItem dal ViewController. Quello che mi mancava nella mia app era che ciascuna delle mie schede aveva un NavigationController che avvolgeva il controller della vista superiore nella scheda. La maggior parte delle risposte a questo argomento non menziona il fatto di avere il controller di navigazione e questo è stato fondamentale per farlo funzionare nella mia app.

Quindi, nella sottoclasse UITableViewContoller ho aggiunto quanto segue a viewDidLoad.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

... 

[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"] 
imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]]; 

} 

Il risultato era l'icona come progettato quando la scheda è stata selezionata. Se si interrompe la chiamata al metodo imageWithRenderingMode, l'icona verrà considerata come un modello colorato con tintColor. Spero che questo ti aiuti.

0
class TabBarController: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tabBar.backgroundImage = UIImage() 
     self.tabBar.shadowImage = UIImage() 
    } 

} 
+0

Segui questo [URL] (http://stackoverflow.com/help) sarà utile per aiutarti a migliorare la qualità dei contenuti –