Как мы можем поместить две строки в UIBarButtonItem в панели навигации

«Сейчас исполняется» находится в одной строке в UIBarButtonItem. Я должен поместить его в две строки, например, «Сейчас» вверху, а «Воспроизведение» внизу. Я написал следующую строку кода: -

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc]

                              initWithTitle:@"Now Playing" 

                              style:UIBarButtonItemStyleBordered 

                              target:self 

                              action:@selector(flipView)];


    self.navigationItem.rightBarButtonItem = flipButton;  

Итак, я хочу, чтобы строка pu прерывалась между «Now Playing». Пожалуйста, помогите мне.


person Community    schedule 19.01.2012    source источник
comment
Извините, это не работает.   -  person    schedule 20.01.2012
comment
Хорошо. Похоже, это дубликат. Но, похоже, простого пути нет... two-lines" title="как я могу сделать текст uibarbuttonitem переносом на две строки"> stackoverflow.com/questions/2614098/   -  person barley    schedule 20.01.2012


Ответы (4)


Да, ты можешь. Это довольно просто сделать. Создайте многострочную кнопку и используйте ее. «Хитрость» заключается в том, чтобы установить свойство titleLabel numberOfLines так, чтобы ему нравились многострочные.

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.titleLabel.numberOfLines = 0;
[button setTitle:NSLocalizedString(@"Now\nPlaying", nil) forState:UIControlStateNormal];
[button sizeToFit];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

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

person Ray Fix    schedule 17.10.2013

Вы можете разместить UIButton как customView внутри кнопки панели (либо установите элемент customView кнопки панели, либо вы можете перетащить его непосредственно поверх вашего UIBarButtonItem), подключить его как выход, а затем сделать;

-(void) viewDidLoad
{
  //...
  self.customButton.titleLabel.numberOfLines = 2;
  self.customButton.suggestionsButton.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
  self.customButton.suggestionsButton.titleLabel.textAlignment = UITextAlignmentCenter;
}

что в моем случае становится

введите здесь описание изображения

person Henrik Hartz    schedule 15.01.2013

введите здесь описание изображениявведите здесь описание изображения

Я сам создаю 2 изображения в формате PNG, и это выглядит хорошо.

UIImage *img = [UIImage imageNamed:@"nowplaying.png"];
UIBarButtonItem *nowPlayingButtonItem = [[[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStyleBordered target:delegate action:@selector(presentNowPlayingMovie)] autorelease];
person bandw    schedule 21.11.2013

person    schedule
comment
Я обнаружил, что textColor игнорировался, а синий цвет по умолчанию всегда применялся элементом навигации. Если вы хотите изменить цвет, установите tintColor UIBarButtonItem. - person Sky; 23.01.2015
comment
Особенно на новых устройствах, если вы скопируете/вставите этот код, вы получите нечеткий текст. Чтобы обойти это, вы можете просто увеличить размеры шрифта/рамки, а затем уменьшить масштаб с помощью конструктора UIImage. - person Sky; 23.01.2015