iPhone / Objective-C - Изменить цвет по умолчанию "navigationItem.prompt" - PullRequest
3 голосов
/ 29 апреля 2011

Есть ли способ установить цвет self.navigationItem.prompt на Белый?На данный момент это черный.

Вот как я сейчас устанавливаю цвет панели навигации:

// Set top navigation bar.
UINavigationBar *bar = [navController navigationBar];
[bar setTintColor:[UIColor colorWithRed:180.0/255.0 green:25.0/255.0 blue:34.0/255.0 alpha:1]];
UIImageView *navBar = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[navBar release];

.. и вот как я устанавливаю мой navigationItem.prompt

self.navigationItem.prompt = @"Tap image for more options.";

Ответы [ 5 ]

7 голосов
/ 12 февраля 2013

Теперь это возможно в iOS 5 или более поздней версии. Попробуйте этот код.

[[UINavigationBar appearance] setTitleTextAttributes:
      [NSDictionary dictionaryWithObjectsAndKeys:
       [UIColor whiteColor], UITextAttributeTextColor, nil]];
3 голосов
/ 29 апреля 2011

Боюсь, что цвет подсказки жестко задан и не настраивается.

Мне удалось настроить подсказку, используя следующий (хитрый) хак, который заменит подсказку:

  • Установите navigationItem.prompt = @"", чтобы на панели навигации отображалось пустое приглашение
  • Установите navigationItem.titleView с помощью:
    • A UILabel или любым другим элементом, который вы хотите заменить заголовком, внутри, какподпредставление, чтобы заменить приглашение:
      • Другое UILabel как приглашение, стилизованное так, как вам нравится
      • Этот ярлык центрирован по x и имеет смещение ay = -31px (вот гденормальное приглашение)
      • Убедитесь, что titleView имеет .clipsToBounds = NO, поэтому настраиваемое приглашение отображается правильно

Я применил этодля всех моих контроллеров путем переопределения UIViewController.setTitle: чем-то вроде (это не будет работать / строить как есть, это быстрое извлечение более сложного кода, но это показывает логику) :

- (void)setTitle:(NSString *)title {
  [super setTitle:title];
  UILabel *titleLabel = ... build the titleLabel
  titleLabel.text = title;
  if (self.navigationItem.prompt) {
    UILabel *promptLabel = ... build the promptLabel
    promptLabel.text = self.navigationItem.prompt;
    self.navigationItem.prompt = @"";
    promptLabel.centerX = titleLabel.width/2;
    promptLabel.top = -31;
    [titleLabel addSubview:promptLabel];
    titleLabel.clipsToBounds = NO;
  }
  self.navigationItem.titleView = titleLabel;
}
1 голос
/ 06 мая 2014

В iOs 5 я изменился с появлением UINavigationBar.Вы можете изменить цвет приглашения с помощью следующего кода

   [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor grayColor], UITextAttributeTextColor, [UIColor colorWithRed:10 green:20 blue:30 alpha:1.0f], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset, nil]];

Я использовал случайное число и цвета. Вы можете настроить цвета, передав свой собственный выбор.Надеюсь, это поможет.

1 голос
/ 29 апреля 2011

попробуй так.

navigationhBar.tintColor = [UIColor colorWithRed:0.4039216041564941 green:0.6470588445663452 blue:0.062745101749897 alpha:1];

0 голосов
/ 16 января 2017

Swift:

        self.navigationController?.navigationBar.titleTextAttributes =
                 [NSForegroundColorAttributeName : UIColor.white]
        self.navigationController?.navigationBar.barTintColor = UIColor.red
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...