Как установить заголовок UIToolBar? - PullRequest
18 голосов
/ 02 мая 2010

Как я могу установить заголовок UIToolBar так, чтобы он выглядел так же, как заголовок в UINavigationBar?

Я пытался использовать кнопку с простым стилем, она выглядит нормально, но она будет выделена, когда я нажму на нее ... Есть ли лучший способ установить заголовок в подробном представлении разделенного вида?

Ответы [ 7 ]

27 голосов
/ 02 ноября 2010

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

#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

// choose whatever width you need instead of 600
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 600, 23)];
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
label.shadowColor = UIColorFromRGB(0xe5e7eb);
label.shadowOffset = CGSizeMake(0, 1);
label.textColor = UIColorFromRGB(0x717880);
label.text = @"your title";
label.font = [UIFont boldSystemFontOfSize:20.0];
UIBarButtonItem *toolBarTitle = [[UIBarButtonItem alloc] initWithCustomView:label];
[label release];
8 голосов
/ 21 сентября 2012

Это решает проблему выделения, отключенную проблему и проблему касания.

Панель инструментов и titleButton были созданы в IB. Заголовок представления покрывается панелью инструментов. Поэтому поместите заголовок на панель инструментов.

self.titleButton.title = @"Order";  // myInterestingTitle

Это выглядит так: enter image description here

Отключить, чтобы предотвратить выделение и не дать ему реагировать на прикосновения.

self.titleButton.enabled=NO;

Тогда это выглядит так: enter image description here

Он будет выглядеть отключенным, поэтому установите цвет для отключенного на белый, который имеет неявную альфа = 1,0. Это эффективно переопределяет «отключенный» вид.

[self.titleButton setTitleTextAttributes:
        [NSDictionary dictionaryWithObject:[UIColor whiteColor]
                                    forKey:UITextAttributeTextColor]
                                forState:UIControlStateDisabled ];

Вот что вы получите: enter image description here

7 голосов
/ 15 декабря 2011

Я думаю, это будет намного чище:

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:frame];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"Your Title" 
                                                         style:UIBarButtonItemStylePlain 
                                                        target:nil 
                                                        action:nil];

UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                        target:nil 
                                                                        action:nil];

NSArray *items = [[NSArray alloc] initWithObjects:spacer, item, spacer, nil];

[toolbar setItems:items];
toolbar.userInteractionEnabled = NO;
1 голос
/ 06 февраля 2012
UILabel* title = [[[UILabel alloc] init] autorelease];
[title setBackgroundColor:[UIColor clearColor]];
[title setFont:[UIFont boldSystemFontOfSize:20]];
[title setTextAlignment:UITextAlignmentCenter];
[title setTextColor:[UIColor grayColor]];
[title.layer setShadowColor:[[UIColor colorWithWhite:1.0 alpha:0.5] CGColor]];
[title.layer setShadowOffset:CGSizeMake(0, 1)];
[title.layer setShadowRadius:0.0];
[title.layer setShadowOpacity:1.0];
[title.layer setMasksToBounds:NO];
[title setText:@"Sample Title"];
[title sizeToFit];

// [[[UIBarButtonItem alloc] initWithCustomView:title] autorelease]
1 голос
/ 03 декабря 2011

enter image description here

  1. Поместите обычную «Закругленную кнопку Rect» (UIButton) на панель инструментов (не «Элемент кнопки панели»)! Имейте в виду, что за сценой IB оборачивает UIButton UIBarButtonItem. Вот почему вам нужно дважды нажать кнопку, чтобы перейти к свойствам UIButton (верно для Xcode 4.2).
  2. Получить в свойствах UIButton. Когда вы щелкнете в первый раз, вы получите свойства «Панель кнопок» (это то, что IB создал для вас автоматически). Теперь нажмите второй раз, чтобы перейти к свойствам «Кнопки» (также, когда вы выбрали UIButton, вы не можете изменить его размер и не можете видеть маркеры изменения размера).
  3. В свойствах кнопки установите тип «Пользовательский», чтобы удалить скругленную прямоугольную рамку вокруг кнопки (вам может потребоваться изменить размер кнопки в IB, чтобы обновить ее, прежде чем вы увидите разницу).
  4. В свойствах кнопки в разделе «Вид» снимите флажок «Взаимодействие с пользователем включено».
0 голосов
/ 13 декабря 2011

Используйте UIBarButtonItem в простом стиле и дополнительно закройте панель инструментов в соответствующей области UIView с чистым фоном. Представление потребляет касания и скрывает их от элемента панели кнопок. Убедитесь, что вы правильно установили маску авторазмера.

0 голосов
/ 03 мая 2010

Вы можете снять флажок «Показывает касание при выделении» в Интерфейсном Разработчике.

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