Ändern Sie die Farbtonfarbe der Registerkartenleiste unter iOS 7
75
Gibt es eine Möglichkeit, den Farbton einer Registerkartenleiste unter iOS 7 vom Standardweiß mit blauen Symbolen in einen anderen Farbton mit verschiedenen Farbtasten zu ändern?
Möglicherweise müssen Sie es unterordnen. Ich habe es noch nie versucht, daher bin ich mir nicht 100% sicher, aber dies scheint eine mögliche Lösung zu sein
Perfekt. Vielen Dank. Noch eine kurze Frage: Gibt es eine Möglichkeit, die nicht aktiven Schaltflächen in der Registerkartenleiste zu tönen (sie sind grau, wenn sie nicht ausgewählt sind)?
Jake Chasan
2
setFinishedSelectedImage ist in iOS7 veraltet.
2.
@null Code für nicht aktive Schaltflächen hat forState: UIControlStateNormal, wodurch die Farbe aller Registerkartenleistenelemente (ausgewählt und nicht ausgewählt) in meiner Anwendung geändert wird. Es gibt einen anderen Status UIControlStateSelected, der jedoch nicht ausgewählt wurde.
Sharj
1
[[UITabBarItem-Darstellung] setTitleTextAttributes .. hat die Farbe der nicht ausgewählten Elemente nicht geändert, sie bleiben grau.
Tom Kincaid
Verwenden Sie UIControlStateNormal für alle Elemente der Registerkartenleiste. Verwenden Sie UIControlStateSelected für ausgewählte Elemente. Beispiel: [[UITabBarItem-Darstellung] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAt;
user8675
22
Es gibt einen viel einfacheren Weg, dies zu tun.
Öffnen Sie einfach den Dateiinspektor und wählen Sie einen "globalen Farbton".
Sie können die Farbfarbe einer App auch im Interface Builder festlegen. Über das Menü "Globaler Farbton" im Abschnitt "Interface Builder-Dokument" des Dateiinspektors können Sie das Fenster "Farben" öffnen oder eine bestimmte Farbe auswählen.
Mit der Einstellung für den globalen Farbton des Interface Builder-Dokuments können Sie den Farbton für eine App nicht festlegen. Sie können den Farbton für ein Storyboard festlegen. Wenn Sie mehrere haben, können Sie ihn wie oben beschrieben mischen und anpassen oder im Code festlegen.
jbbenni
1
Wie seltsam. Ich habe gerade versucht, die Farbtonfarbe im Storyboard in iOS 7, Xcode 5.1.1, einzustellen, und es tut nichts für eine von Storyboard erstellte UITabBar.
Alex Zavatone
18
iOS 7.1.1
Wenn jemand eine global eingestellte Farbtonfarbe verwenden muss:
Wenn Sie diese Option verwenden, können Sie die Farbe dennoch Bildschirm für Bildschirm überschreiben?
Jake Chasan
Mit dem Code in der zweiten Zeile können Sie die Farbe für jeden Bildschirm
separat
1
Dies ist die einzige Lösung, die ich gefunden habe und die über die VDL eines VC in iOS 7 für das aktuelle Registerkartenelement funktioniert. [self.tabBarController.tabBar setTintColor: [UIColor orangeColor]];
Tut nichts unter iOS 7.1 in Xcode 5.1.1. Auch bei Verwendung von _window im AppDelegate.
Alex Zavatone
8
Schreiben Sie dies in Ihre View Controller-Klasse Ihrer Registerkartenleiste:
// Generate a black tab barself.tabBarController.tabBar.barTintColor = [UIColor blackColor];
// Set the selected icons and text tint colorself.tabBarController.tabBar.tintColor = [UIColor orangeColor];
Stellen Sie im " Attributes Inspector " Ihres Registerkartenleisten-Controllers im Interface Builder sicher, dass Ihre untere Leiste auf "Undurchsichtige Registerkartenleiste" eingestellt ist:
Gehen Sie jetzt zu Ihrer AppDelegate.m- Datei. Finden:
Fügen Sie dann diesen Code zwischen die geschweiften Klammern ein, um die Farben der Schaltflächen der Registerkartenleiste und des Hintergrunds der Registerkartenleiste zu ändern:
///----------------SET TAB BAR COLOR------------------------//
//--------------FOR TAB BAR BUTTON COLOR---------------//[[UITabBar appearance] setTintColor:[UIColor greenColor]];
//-------------FOR TAB BAR BACKGROUND COLOR------------//[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
Antworten:
Versuchen Sie Folgendes:
[[UITabBar appearance] setTintColor:[UIColor redColor]]; [[UITabBar appearance] setBarTintColor:[UIColor yellowColor]];
Um die nicht aktiven Tasten zu tönen, geben Sie den folgenden Code in Ihre VCs ein
viewDidLoad
:UITabBarItem *tabBarItem = [yourTabBarController.tabBar.items objectAtIndex:0]; UIImage *unselectedImage = [UIImage imageNamed:@"icon-unselected"]; UIImage *selectedImage = [UIImage imageNamed:@"icon-selected"]; [tabBarItem setImage: [unselectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [tabBarItem setSelectedImage: selectedImage];
Sie müssen dies für alle tabBarItems tun, und ja, ich weiß, dass es hässlich ist und hoffe, dass es einen saubereren Weg gibt, dies zu tun.
Schnell:
UITabBar.appearance().tintColor = UIColor.red tabBarItem.image = UIImage(named: "unselected")?.withRenderingMode(.alwaysOriginal) tabBarItem.selectedImage = UIImage(named: "selected")?.withRenderingMode(.alwaysOriginal)
quelle
Es gibt einen viel einfacheren Weg, dies zu tun.
Öffnen Sie einfach den Dateiinspektor und wählen Sie einen "globalen Farbton".
Siehe auch:
https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html
quelle
iOS 7.1.1
Wenn jemand eine global eingestellte Farbtonfarbe verwenden muss:
[[UIView appearance] setTintColor:[UIColor whiteColor]];
In
didFinishLaunchingWithOptions
vonAppDelegate
.Der folgende Code ändert bei jeder
viewDidLoad
Methode nur die Farbe der Registerkartenleiste :[self.tabBarController.tabBar setTintColor:[UIColor redColor]];
quelle
Im App-Delegaten didFinishLaunchingWithOptions:
window.tintColor = [UIColor purpleColor];
Legt die Farbtonfarbe global für die App fest.
quelle
Schreiben Sie dies in Ihre View Controller-Klasse Ihrer Registerkartenleiste:
// Generate a black tab bar self.tabBarController.tabBar.barTintColor = [UIColor blackColor]; // Set the selected icons and text tint color self.tabBarController.tabBar.tintColor = [UIColor orangeColor];
quelle
Was bei mir endlich funktioniert hat war:
[self.tabBar setTintColor:[UIColor redColor]]; [self.tabBar setBarTintColor:[UIColor yellowColor]];
quelle
Stellen Sie im " Attributes Inspector " Ihres Registerkartenleisten-Controllers im Interface Builder sicher, dass Ihre untere Leiste auf "Undurchsichtige Registerkartenleiste" eingestellt ist:
Gehen Sie jetzt zu Ihrer AppDelegate.m- Datei. Finden:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Fügen Sie dann diesen Code zwischen die geschweiften Klammern ein, um die Farben der Schaltflächen der Registerkartenleiste und des Hintergrunds der Registerkartenleiste zu ändern:
///----------------SET TAB BAR COLOR------------------------// //--------------FOR TAB BAR BUTTON COLOR---------------// [[UITabBar appearance] setTintColor:[UIColor greenColor]]; //-------------FOR TAB BAR BACKGROUND COLOR------------// [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
quelle
Nachdem ich alle vorgeschlagenen Lösungen ausprobiert hatte, konnte ich keine sehr hilfreichen finden.
Ich habe endlich folgendes versucht:
[self.tabBar setTintColor:[UIColor orangeColor]];
das hat perfekt geklappt.
Ich habe nur ein Bild für jedes TabBarItem bereitgestellt. Ich brauchte nicht einmal ein ausgewähltes Bild.
Ich habe es sogar in den Child-ViewControllern verwendet, um verschiedene TintColors festzulegen:
UIColor *theColorYouWish = ...; if ([[self.parentViewController class] isSubclassOfClass:[UITabBarController class]]){ UITabBarController *tbc = (UITabBarController *) self.parentViewController; [tbc.tabBar setTintColor:theColorYouWish]; }
quelle
Sie können Ihre Farbtonfarbe und Schriftart als setTitleTextattribute festlegen:
UIFont *font= (kUIScreenHeight>KipadHeight)?[UIFont boldSystemFontOfSize:32.0f]:[UIFont boldSystemFontOfSize:16.0f]; NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, tintColorLight, NSForegroundColorAttributeName, nil]; [[UINavigationBar appearance] setTitleTextAttributes:attributes];
quelle