Подтвердить что ты не робот

IOS - глобально изменить цвет заголовка панели навигации с помощью внешнего вида?

Это приведет к сбою приложения:

[[UINavigationBar appearance] setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];

Есть ли способ сделать это с помощью внешнего вида?

4b9b3361

Ответ 1

Это сработало:

NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];

Ответ 2

Вот пример того, как это сделать в Swift:

UINavigationBar.appearance().titleTextAttributes =
  [NSFontAttributeName:UIFont(name:"Exo2-Bold", size: 18) as! AnyObject,
  NSForegroundColorAttributeName:UIColor.whiteColor()]

Ответ 3

Отключение приложения до того, как UINavigationBar не имеет названия или состояния... Это методы UIButton

Вам нужно

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

Ответ 4

Ответ @RyJ велик и работает для меня. Думал, что я бы понял, что там есть хороший учебник по этому сайту в Ray Wenderlich, под названием (извините за каламбур):

Настройка пользовательского интерфейса в iOS 6

См. раздел Настройка UINavigationBar

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

// Customize the title text for *all* UINavigationBars
[[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
  UITextAttributeTextColor,
  [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
  UITextAttributeTextShadowColor,
  [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
  UITextAttributeTextShadowOffset,
  [UIFont fontWithName:@"Arial-Bold" size:0.0],
  UITextAttributeFont,
  nil]];

Еще одна второстепенная точка заключается в том, что кажется, что в строке заголовка присутствует тень по умолчанию, поэтому, чтобы избавиться от нее, вы не можете просто удалить атрибут. Вместо этого вам нужно установить смещение тени:

UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0, 0)]

Ответ 5

Я использовал следующий код, чтобы изменить цвет заголовка.

NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor blackColor];
shadow.shadowOffset = CGSizeMake(1, 0);

NSDictionary *titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:shadow};

[[UINavigationBar appearance] setTitleTextAttributes:titleTextAttributes];

Ответ 6

Используя современный синтаксис и код, который действительно запускается, вот как глобально создать текст заголовка UINavigationBar:

NSShadow *navigationBarTitleShadow = [[NSShadow alloc] init];
navigationBarTitleShadow.shadowColor = [UIColor colorWithWhite:0.5
                                                         alpha:0.5];
navigationBarTitleShadow.shadowOffset = CGSizeMake(2.0, 2.0);
[[UINavigationBar appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor blackColor],
                                                        NSFontAttributeName : [UIFont fontWithName:@"Arial-BoldMT"
                                                                                              size:30.0],
                                                        NSShadowAttributeName : navigationBarTitleShadow }];

Примечание: свойство NSShadow shadowBlurRadius не соблюдается.

Примечание. Тени - это iOS 6. Никогда не используйте их.