Добавить изображение на панель навигации - PullRequest
0 голосов
/ 23 февраля 2012

Я хочу изменить изображение , заголовок и цвет кнопки BackButtonBar на панели навигации. Вот код:

UIButton* backButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackButtonTopBar.png"]];
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backButtonItem;

self.navigationController.navigationBar.tintColor = [UIColor blackColor]; 

UIImage *image = [UIImage imageNamed: @"TopBar.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
self.navigationItem.titleView = imageView;

но у меня есть некоторые проблемы:

  1. черный цвет не точка
  2. заднее изображение не работает

Так кто-то может мне помочь? Спасибо.

Ответы [ 2 ]

1 голос
/ 23 февраля 2012
UIButton * backButton = [UIButton buttonWithType:101];

[backButton setBackgroundImage:[UIImage imageNamed:BACK_BUTTON_IMAGE_NORMAL] forState:UIControlStateNormal];

    [backButton setBackgroundImage:[UIImage imageNamed:BACK_BUTTON_PRESSED] forState:UIControlStateHighlighted];
    UIView * backButtonView = [[UIView alloc] initWithFrame:CGRectMake(BACK_BUTTON_FRAME)];

    [backButton addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];    

    [backButtonView addSubview:backButton];

    UIBarButtonItem * backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
    self.navigationItem.leftBarButtonItem = backBarButton;

[backButtonView release];

[backBarButton release];
0 голосов
/ 23 февраля 2012

Что означает эта строка кода?

UIButton* backButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackButtonTopBar.png"]];

Если вам нужно создать кнопку, вам нужно сделать следующее.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

и затем установите для него фоновое изображение.

Но я предпочитаю создать расширение категории для UIBarButtonItem, как показано ниже

//UIBarButtonItem+YourPreferredName.h    
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action;

//UIBarButtonItem+YourPreferredName.m    
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
    button.titleLabel.textAlignment = UITextAlignmentCenter;

    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button setTitle:title forState:UIControlStateNormal];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    // additional customizations here...

    UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

    return [barButtonItem autorelease];    
}

Если вы импортируете UIBarButtonItem+YourPreferredName.h там, где вам это нужно, вы можете использовать следующее:

UIBarButtonItem* backBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"YoutImageName"] title:@"YourTitle" target:self action:@selector(goBack:)];

, где goBack может быть следующим:

- (void)goBack:(id)sender
{
   // do stuff here
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...