Как мы можем поставить две строки в UIBarButtonItem в панели навигации - PullRequest
9 голосов
/ 19 января 2012

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

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc]

                              initWithTitle:@"Now Playing" 

                              style:UIBarButtonItemStyleBordered 

                              target:self 

                              action:@selector(flipView)];


    self.navigationItem.rightBarButtonItem = flipButton;  

Так что я хочу сделать разрыв строкимежду "Сейчас играет".Поэтому, пожалуйста, помогите мне.

Ответы [ 4 ]

9 голосов
/ 17 октября 2013

Да, вы можете.Это довольно просто сделать.Создайте многострочную кнопку и используйте ее.«Хитрость» состоит в том, чтобы установить свойство 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];

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

4 голосов
/ 07 марта 2012
- (void)createCustomRightBarButton_
{
    UILabel * addCustomLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 64, 25)] autorelease];
    addCustomLabel.text =@"Now\nPlaying";
    addCustomLabel.textColor = [UIColor whiteColor];
    addCustomLabel.font = [UIFont boldSystemFontOfSize:11];
    addCustomLabel.numberOfLines = 2;
    addCustomLabel.backgroundColor = [UIColor clearColor];
    addCustomLabel.textAlignment = UITextAlignmentCenter;

    CGSize size = addCustomLabel.bounds.size;

    UIGraphicsBeginImageContext(size);      
    CGContextRef context = UIGraphicsGetCurrentContext();       
    [addCustomLabel.layer renderInContext: context];
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
    UIImage * img = [UIImage imageWithCGImage: imageRef];
    CGImageRelease(imageRef);
    CGContextRelease(context);

    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:img
                                                                           style:UIBarButtonItemStyleBordered 
                                                                          target:self 
                                                                          action:@selector(flipView)]
                                              autorelease];
}
0 голосов
/ 21 ноября 2013

enter image description here enter image description here

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

UIImage *img = [UIImage imageNamed:@"nowplaying.png"];
UIBarButtonItem *nowPlayingButtonItem = [[[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStyleBordered target:delegate action:@selector(presentNowPlayingMovie)] autorelease];
0 голосов
/ 15 января 2013

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

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

, который в моем случае становится

enter image description here

...