2013-10-24 16 views
18

setFinishedSelectedImage:withFinishedUnselectedImage: in iOS7 veraltet. Apple-recommends Setter von image und selectedImage mit UIImageRenderingModeAlwaysOriginal stattdessen zu verwenden. Ich kann kein Beispiel finden, wie man UIImageRenderingModeAlwaysOriginal benutzt. Die Frage ist also ganz einfach: Wie setzt man Bilder für UITabBarItem in iOS7?UITabBarItem setFinishedSelectedImage: veraltet in iOS7

+0

Schauen Sie sich die 2013 WWDC im ursprünglichen Zustand Bild anzuzeigen Video "Was ist neu mit Cocoa Touch". Ich denke, es wird in diesem Video erklärt. – borrrden

Antwort

55

Wenn Sie versuchen dann den folgenden Code verwenden, an den UITabBar Anzeigen des tatsächlichen Bildes zu erreichen.

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

und wenn Sie möchten, für den ausgewählten dann verwenden Sie die folgende

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

diese beiden sind Alternative zu

setFinishedSelectedImage: withFinishedUnselectedImage: 
+1

+1 das funktioniert perfekt. Diese Lösung verdient mehr Aufmerksamkeit als die IDE empfohlen initWithTitle: image: selectedImage: als Ersatz. – justinkoh

6

Die setFinishedSelectedImage ist veraltet, da Apple die Schnittstellen zur Verwendung der Vorlagenbilder und der von Ihnen ausgewählten tintColor (oder der blauen Standardeinstellung) steuern möchte. Die einfache Standardeinstellung bewirkt also, dass die Registerkartenelemente auf diese Weise angezeigt werden.

Wenn Sie noch brauchen, um das Symbolbild zu verwenden, wie entworfen, können Sie das Bild mit dem Rendering-Modus für immer originell erstellen. Wie:

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

Um das Symbol stellen Sie die tabBarItem vom ViewController erhalten müssen. Was ich in meiner App vermisste, war, dass jede meiner Registerkarten einen NavigationController hatte, der den Topview-Controller in die Registerkarte einwickelte. Die meisten Antworten zu diesem Thema erwähnen nicht die NavigationContoller bekommen und das war der Schlüssel, um es in meiner App zu arbeiten.

in meiner UITableViewContoller Unterklasse Also, habe ich folgendes viewDidLoad.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

... 

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

} 

Das Ergebnis war das Symbol so gestaltet, wenn die Registerkarte ausgewählt wurde. Wenn Sie den imageWithRenderingMode-Methodenaufruf nicht ausführen, wird das Symbol als Vorlage behandelt, die mit der Farbe "tintColor" eingefärbt ist. Hoffe das hilft.

0
class TabBarController: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

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

} 
+0

Bitte folgen Sie diesem [URL] (http://stackoverflow.com/help) wird es nützlich sein, das Sie Ihre Content-Qualität heben aufhelfen –