UINavigationBar с двумя кнопками слева - PullRequest
2 голосов
/ 26 июля 2011

Я знаю, что в stackoverflow есть много похожих вопросов, но мой немного другой.Я покажу это с изображениями, потому что это легче понять.Используя этот код, я взял из здесь , у меня был такой результат:

some problems here

Легко видеть, что вторая кнопка не все на экране.Я пытался получить отрицательные числа в кадре UIToolbar, но они не работают.Мне там не нужен заголовок, только способ переместить эти кнопки влево.

Ответы [ 3 ]

5 голосов
/ 26 июля 2011

Здесь другой подход. Я создал пользовательский сегментированный элемент управления (ссылка на github) как UIView, содержащий несколько кнопок. Вы можете сделать то же самое с пробелом между кнопками.

Затем я добавил это как отдельный элемент кнопки с пользовательским представлением.

CGRect frame = CGRectMake(320-width, 0, width, height);
[segControl.view setFrame:frame];
segControl.view.backgroundColor = [UIColor clearColor];
UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc] initWithCustomView:segControl.view];
self.navigationItem.rightBarButtonItem = rightBtn;

Результат способен расширяться ближе к середине:

enter image description here

Отвечая на комментарий ниже: да, он независим.

enter image description here

0 голосов
/ 26 июля 2011
 UIToolbar *tool = [UIToolbar new];
    tool.frame = CGRectMake(0, 0, 320, 42);
    //tool.frame = self.navigationController.navigationBar.frame;   
    NSMutableArray *items = [[NSMutableArray alloc] initWithCapacity:7];
    //space

    UIBarButtonItem *btn3;
     btn3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
     UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
     [items addObject:btn3];
     [btn3 release];


    //create setting button
    UIButton *bttn=[[UIButton alloc]initWithFrame:CGRectMake(45, 0, 20, 30)];
    [bttn setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
    [bttn addTarget:self action:@selector(settings:) forControlEvents:UIControlEventTouchDown];
    UIBarButtonItem *btn1=[[UIBarButtonItem alloc]initWithCustomView:bttn];
    [items addObject:btn1];
    [btn1 release];


    UIBarButtonItem *btn = [[UIBarButtonItem alloc] init];

    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];


    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];
    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];

    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];

    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];



    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];



    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
               UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];

    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace   target:nil action:nil];
    [items addObject:btn];
    [btn release];


    //pause Button
    UIButton *bttn1=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 20, 30)];
    [bttn1 setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
    [bttn1 addTarget:self action:@selector(pause:) forControlEvents:UIControlEventTouchDown];
    //UIBarButtonItem *btn2=[[UIBarButtonItem alloc]initWithCustomView:bttn1];
    btnPause = [[UIBarButtonItem alloc]initWithCustomView:bttn1];
    [items addObject:btnPause];
    //[btn2 release];

    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
                               UIBarButtonSystemItemFlexibleSpace  target:nil action:nil];
    [items addObject:btn];
    [btn release];

    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace  target:nil action:nil];
    [items addObject:btn];
    [btn release];
    //Space
    btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
           UIBarButtonSystemItemFlexibleSpace  target:nil action:nil];
    [items addObject:btn];
    [btn release];

    //Next Button
    btnNext = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
               UIBarButtonSystemItemPlay  target:self action:@selector(next:)];
    [items addObject:btnNext];


    [tool setItems:items];
    tool.barStyle =UIBarStyleDefault;
    tool.backgroundColor = [UIColor clearColor];

    //self.navigationItem.leftBarButtonItem.customView = tool;
    //self.navigationItem.titleView = tool;
    self.navigationItem.leftBarButtonItem =  [[UIBarButtonItem alloc] initWithCustomView:tool];

используйте этот метод для отображения большего количества кнопок на панели инструментов с навигацией.

0 голосов
/ 26 июля 2011

Какой у тебя крайний срок? Эта функциональность добавлена ​​в iOS5, поэтому если вы собираетесь выпустить свое приложение после (поправьте меня, если я ошибаюсь) сентября, вы можете переключить свое приложение на новый UIKit. Вы потеряете обратную совместимость с <= iOS4. </p>

...