Как изменить цвет панели навигации в iOS 7 или 6?
Я хочу изменить цвет цвета панели навигации, но я не уверен, следует ли менять оттенок или фон. Я знаю, что iOS 7 собирается более плоский дизайн (даже рекомендующий удаление градиентов), но у меня возникают проблемы с расшифровкой этих двух. Даже если я устанавливаю фоновый цвет, он ничего не делает.
На этом изображении фон установлен на зеленый, но панель все еще голубая:
![Enter image description here]()
Ответы
Ответ 1
Поведение tintColor для баров изменилось на iOS 7.0. Он больше не влияет на фоновый фон и ведет себя так, как описано для свойства tintColor, добавленного в UIView.
Чтобы подкрасить фоновый фон, используйте -barTintColor.
navController.navigationBar.barTintColor = [UIColor navigationColor];
Ответ 2
Если вы хотите иметь сплошной цвет для своей панели навигации в iOS 6, похожей на iOS 7, используйте это:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor greenColor]];
в iOS 7 используйте barTintColor
следующим образом:
navigationController.navigationBar.barTintColor = [UIColor greenColor];
или
[[UINavigationBar appearance] setBarTintColor:[UIColor greenColor]];
Ответ 3
//В ios 7: -
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
//В ios 6: -
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
Ответ 4
Свойство цвета фона игнорируется на UINavigationBar
, поэтому, если вы хотите отрегулировать внешний вид, вам нужно либо использовать tintColor
, либо вызвать некоторые другие методы, перечисленные в разделе "Настройка внешнего вида панели" ссылка класса UINavigationBar (например, setBackgroundImage:forBarMetrics:
).
Имейте в виду, что свойство tintColor
работает по-разному в iOS 7, поэтому, если вы хотите, чтобы последовательный просмотр между iOS 7 и предыдущей версией с использованием фонового изображения мог быть вашим лучшим выбором. Также стоит отметить, что вы не можете настроить фоновое изображение в раскадровке, вам нужно создать IBOutlet
для вашего UINavigationBar
и изменить его в viewDidLoad
или в другом подходящем месте.
Ответ 5
Еще одна вещь, если вы хотите изменить цвет навигации bg в UIPopover, вам нужно установить barStyle
в UIBarStyleBlack
if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7
navigationController.navigationBar.barStyle = UIBarStyleBlack;
navigationController.navigationBar.barTintColor = [UIColor redColor];
}
Ответ 6
Вот как правильно установить его для iOS 6 и 7.
+ (void)fixNavBarColor:(UINavigationBar*)bar {
if (iosVersion >= 7) {
bar.barTintColor = [UIColor redColor];
bar.translucent = NO;
}else {
bar.tintColor = [UIColor redColor];
bar.opaque = YES;
}
}
Ответ 7
Полный код с проверкой версий.
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
// do stuff for iOS 7 and newer
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}
else {
// do stuff for older versions than iOS 7
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
Ответ 8
Вы можете проверить версию iOS и просто установить цвет оттенка панели навигации.
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
}else{
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
Ответ 9
Основанный на ответе ответил, это сработало для меня:
/* check for iOS 6 or 7 */
if ([[self navigationController].navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
[[self navigationController].navigationBar setBarTintColor:[UIColor whiteColor]];
} else {
/* Set background and foreground */
[[self navigationController].navigationBar setTintColor:[UIColor whiteColor]];
[self navigationController].navigationBar.titleTextAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[UIColor blackColor],UITextAttributeTextColor,nil];
}
Ответ 10
you can add bellow code in appdelegate.m .if your app is navigation based
// for background color
[nav.navigationBar setBarTintColor:[UIColor blueColor]];
// for change navigation title and button color
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
NSForegroundColorAttributeName,
[UIFont fontWithName:@"FontNAme" size:20],
NSFontAttributeName, nil]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
Ответ 11
Вставьте приведенный ниже код в doneFinishLaunchingWithOptions() в AppDelegate.m
[[UINavigationBar appearance] setBarTintColor:[UIColor
colorWithRed:26.0/255.0 green:184.0/255.0 blue:110.0/255.0 alpha:1.0]];
Ответ 12
Я использую следующий код (в С#), чтобы изменить цвет NavigationBar:
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone);
NavigationController.NavigationBar.BackgroundColor = UIColor.Green;
Фокус в том, что вам нужно избавиться от фонового изображения по умолчанию, а затем появится цвет.
Ответ 13
Если вы хотите изменить цвет панели навигации, используйте свойство barTintColor
. Кроме того, если вы установите для него цвет tintColor
, это влияет на элемент навигационной панели, как на кнопку.
FYI, вы хотите сохранить панель стилей iOS 6, сделать фоновое изображение похожим на предыдущий стиль и установить его.
Более подробную информацию вы можете получить по следующей ссылке:
https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html
Ответ 14
В iOS7, если ваш контроллер навигации содержится в панели вкладок, splitview или в каком-либо другом контейнере, то для глобального изменения вида навигационной панели используйте следующий метод::
[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];
Ответ 15
Попробуйте выполнить код ниже в - (void)viewDidLoad
вашего ViewController.m
[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];
это работало для меня в iOS 6.. Попробуйте..
Ответ 16
Я не уверен в изменении оттенка и цвета фона, но так вы изменяете цвет оттенка панели навигации:
Попробуйте этот код..
[navigationController.navigationBar setTintColor:[UIColor redColor];
//Красный как пример.