0

В моем приложении у меня есть tintColor окна, который устанавливает все, что должно быть окрашено в красный цвет. пользователь нажимает элемент кнопки панели (красные элементы) на контроллере корневого представления и представляет таблицу UIModalPresentationSheet с навигационной панелью (красные навигационные элементы). Нажав кнопку на , пункт навигации, он вытащил полный Модальный вид, теперь в этом модальном представлении также есть панель навигации, но все навигационные элементы серые; они пригодны для использования и по-прежнему выполняют правильную функцию, но их цвет серый. Любая идея почему? Сначала я пробовал делать это программно с серыми кнопками, затем я делал это через раскадровку и тонировал навигационные элементы непосредственно на сцене, и они выглядели красными, но при запуске они были серыми на Modal View. Может ли кто-нибудь сказать мне, почему?Странное поведение UINavigationBar?

Вот как представлен вид модальный:

- (void)barButtonItemPressedOnUIModalPresentationSheet { 

    asdfVC *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"showAsdf"]; 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

    [self presentViewController:navigationController animated:YES completion:nil]; 
} 

Странно то, что я поставил нав оттенок, кнопку оттенок, даже вид тонировку в нужном классе VC, но это, кажется, полностью игнорируй это. Может быть, потому, что я установил навигационную панель на нем до, представляя его?

ответ

0

Вы можете попробовать множество оттенок цвета на ваш взгляд контроллера и на панели навигации, где он показывает зеленый:

viewController.view.tintColor = [UIColor redColor]; 
viewController.navigationController.navigationBar.tintColor = [UIColor redColor]; 
+0

Thats the weird thing !!! У меня есть этот набор в моем классе, но кнопки серые !!! Может ли быть, что я устанавливаю навигационную панель, прежде чем представлять контроллер вида? –

1

Вы могли бы попытаться установить цвет для всего приложения с appearance собственности. Установите его в AppDelegate, и пользовательский интерфейс будет выглядеть на всех взглядах одинаково.

Чтобы установить tintColor красное использование:

[[UINavigationBar appearance]setTintColor:[UIColor redColor]; 

и

[[UIBarButtonItem appearance]setTintColor:[UIColor redColor]; 

Вы также можете проверить следующий код для еще более настроек:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]setTintColor:[UIColor redColor]]; 
0

я столкнулся эту ту же самую аномалию в моем приложении и попробовали все, что вы пробовали. Я поставил код, чтобы сделать синим цветом (в моем случае) в viewWillAppear и viewDidAppear, и ничто, кажется, не исправляет его. Я предполагаю, что это ошибка IOS.

+0

очень неудачный. Я подал отчет об ошибке на яблоко, и надеюсь, что он скоро исправится! –

1

Вы можете сделать объект UINavigationController в своем классе AppDelegate.h.

@property (strong, nonatomic) UINavigationController *navigationController; 

В своем классе AppDelegate.m написать следующий код в методе didFinishLaunchingWithOptions

self.navigationController=[[UINavigationController alloc]initWithRootViewController:self.UIModalPresentationSheet]; 
self.window.rootViewController = self.navigationController; 

Теперь запишите этот код в методе ViewDidLoad вашего класса UIModalPresentationSheet

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.navigationController.navigationBar.tintColor = [UIColor redColor]; 
} 

Надежда будет работать ,

+0

У меня нет UIModalPresentationSheet в моем делете приложения, поэтому он дает мне ошибку "свойство UIModalPresentationSheet не найдено на объекте типа appdelegate." –

+0

Ваш UIModalPresentationSheet является типом ViewController? Пожалуйста, объясни – MahboobiOSDeveloper

0

Это происходит из-за того, что Apple предполагает, что мы не представим более одного контроллера вида и не уменьшаем фоновые и ВСЕ элементы кнопки панели (не уверены, почему) в качестве поведения по умолчанию, чтобы сосредоточиться на самом переднем представлении.

Чтобы исправить это, вам просто нужно принудительно настроить tintAdjustmentMode на Normal в окне приложения в DidFinishLaunchingWithOptions.

self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 
Смежные вопросы