Использовать пользовательский фон с UINavigationController по умолчанию UIToolbar - PullRequest
2 голосов
/ 06 сентября 2010

Я хочу использовать свой фон для моего UIToolbar.

Чтобы сделать это с UINavigationBar, я только что использовал эту категорию с переопределением метода drawRect:

    @implementation UIToolbar (CustomImage)

    - (void)drawRect:(CGRect)rect {
         UIImage *image = [UIImage imageNamed: @"nm010400.png"];
         [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
    @end

Этот фрагмент кода отлично работает для UINavigationBar, но не работает для UIToolbar, который не включен в UINavigationController и включен с помощью следующей строки кода:

self.navController.toolbarHidden = NO;

Может кто-нибудь помочь мне с проблемой? Я уверен, что UINavigationController использует стандартный UIToolbar, так почему это не работает?!? спасибо

Ответы [ 3 ]

2 голосов
/ 01 ноября 2011

Для создания пользовательских элементов пользовательского интерфейса больше нет необходимости создавать категории. В IOS 5 вы можете изменить внешний вид любого элемента пользовательского интерфейса с помощью протокола UIApperance. Вы можете изменить отдельные элементы пользовательского интерфейса, как обычно, но реальная сила приходит при создании тематического приложения. Используя этот новый протокол, вы можете изменить стиль всех экземпляров определенного элемента пользовательского интерфейса или даже элемента пользовательского интерфейса в определенной настройке, такой как UIBarButtonItem в UINavigationController.

Чтобы изменить внешний вид всех UINavigationBars в вашем приложении, вы можете установить фон следующим образом:

[[UINavigationBar appearance]setBackgroundImage:[UIImage imageNamed:@"myNavBar.png"] forBarMetrics:UIBarMetricsDefault];

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

[[UINavigationBar appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor whiteColor], UITextAttributeTextColor, 
  [UIFont fontWithName:@"MarkerFelt-Thin" size:24], UITextAttributeFont, nil]];

Вы также можете использовать это для других элементов пользовательского интерфейса, чтобы изменить фон для всех экземпляров панели UIToolbar, которые вы можете вызвать

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"myToolBar.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

Надеюсь, это поможет.

1 голос
/ 24 января 2012

В viewDidLoad пользовательского UINavigationController используйте следующий код:

[self.toolbar setBackgroundImage:[UIImage imageNamed:@"mytoolbarbg.png"] 
              forToolbarPosition:1 
              barMetrics:UIBarMetricsDefault];
1 голос
/ 05 октября 2010

Попробуйте этот пост: Как добавить несколько UIBarButton в UINavigationItem.rightBarButtonItem (или leftBarButtonItem)?

Я также обнаружил, что вы должны установить свой фон UIToolbar, чтобы очистить:

    [toolbar setBackgroundColor:[UIColor clearColor]];
...