Изменить цвет текста кнопки панели навигации - PullRequest
0 голосов
/ 12 июля 2011

Я создаю пользовательский вид для создания элементов панели навигации.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0,0,70,35)];
        UIButton *myBackButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
        [myBackButton setFrame:CGRectMake(0,0,70,35)];
        myBackButton.titleLabel.text = @"Back";
        myBackButton.backgroundColor = [UIColor yellowColor];
        myBackButton.titleLabel.textAlignment = UITextAlignmentCenter;
        myBackButton.titleLabel.textColor = [UIColor blackColor];
        [myBackButton setEnabled:YES];
        [myBackButton addTarget:self.navigationController action:@selector(moveBack:) forControlEvents:UIControlEventTouchUpInside];
        [backButtonView addSubview:myBackButton];
        [myBackButton release];
        UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
        self.navigationItem.leftBarButtonItem = backButton;
        [backButtonView release];
        [backButton release];


        CGRect frame = CGRectMake(300, 0, 400, 35);
        UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
        label.backgroundColor = [UIColor yellowColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = UITextAlignmentCenter;
        label.textColor = [UIColor blackColor];
        label.text = @"Order booking";
        self.navigationItem.titleView = label;
    }
    return self;
}  

При этом я получаю следующий вывод:

enter image description here

Я хочу, чтобы кнопка панели имела тот же цвет фона, что и панель навигации, и ее текст вчерный цвет.Я пытался сделать это в любом случае, используя UINavigationController делегат, но не добился успеха.Какие изменения мне нужно сделать?

Ответы [ 2 ]

4 голосов
/ 15 сентября 2012

Здесь показано, как изменить цвет текстовой метки (например, на черный) UIBarButtonItem (текстовая метка имеет белый цвет по умолчанию):

[self.myBarButton setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor blackColor] forKey:UITextAttributeTextColor] forState:UIControlStateNormal];

Особенно, когда вы выбираете светлый оттенок (цвет фона)) кнопки:

self.myBarButton.tintColor = [UIColor yellowColor];

И не забывайте, вы также можете изменить цвет тени текстовой метки: (код должен быть помещен перед изменением самого цвета текстовой метки, чтобы не иметьтень перерисовывается поверх цвета текстовой метки!)

[self.fullVersionViewButton setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor grayColor] forKey:UITextAttributeTextShadowColor] forState:UIControlStateNormal];
1 голос
/ 12 июля 2011

Прочтите документацию 5.0.Был сеанс WWDC '11 на эту самую тему о новом, и гораздо более простом способе сделать это.(Сессия 114 - Настройка внешнего вида элементов управления UIKit).

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