Настройка UINavigationBar как в приложении Fox News для iPhone

Как можно настроить UINavigationBar? Используются ли подклассы или категории?

Приложение Fox News для iPhone

Меня интересуют 2 аспекта:

  1. Добавление изображения в NavBar (например, логотип FOXNEWS)
  2. Настройка кнопки «Назад» на «Показывает». (кнопка «Назад» обычно принимает заголовок предыдущего представления в стеке, но в предыдущем представлении заголовка нет.)

Заранее благодарю за любую помощь


person Shameem    schedule 03.12.2010    source источник


Ответы (2)


Для приложения Fox News похоже, что они просто устанавливают цвет оттенка панели навигации. Что касается логотипа Fox News, то, вероятно, это просто изображение в заголовке панели навигации. Этот код входит в метод viewDidLoad контроллера представления:

[self.navigationController.navigationBar setTintColor:/* Custom color here */];

UIImageView *logoView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]];
[self.navigationItem setTitleView:logoView];
[logoView release];

Чтобы настроить кнопку «Назад», вам нужно поместить ее в метод viewDidLoad предыдущего контроллера представления (т. е. того, к которому ведет эта кнопка):

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Shows"
    style:UIBarButtonItemStyleBordered target:nil action:nil];
[self.navigationItem setBackBarButtonItem:backButton];
[backButton release];

Если вы хотите использовать полностью настраиваемое фоновое изображение для панели навигации вашего приложения, вам необходимо создать пользовательскую категорию UINavigationBar и нарисовать изображение в ее методе drawRect:. Что-то вроде этого:

@implementation UINavigationBar (UINavigationBarBackgroundImage)

- (void)drawRect:(CGRect)rect
{
    [[UIImage imageNamed:@"navigation-bar"] drawInRect:rect];

    // Optionally you can set the tintColor here to go with the background
}

@end
person BoltClock    schedule 03.12.2010

добавление изображения на панель навигации используйте этот код

- (void)drawRect:(CGRect)rect {

UIColor *color = [UIColor blackColor]; //this use to set button color in FoxNew Site //button color
UIImage *img  = [UIImage imageNamed: @"ImageName"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
self.tintColor = color;

}

создать категорию для UINavigationBar

@implementation UINavigationBar (UINavigationBarCategory)
    - (void)drawRect:(CGRect)rect {
     }

@end
person iOSPawan    schedule 03.12.2010
comment
Я пробовал это, но изображение не анимируется, когда анимируется панель навигации (когда новый вид нажимается или появляется). - person Shameem; 03.12.2010
comment
@sleepy: Это связано с тем, как работает UINavigationBar. Это совершенно нормально. Если вы все еще хотите, чтобы это анимировалось, я не знаю, как это сделать. - person BoltClock; 03.12.2010