UINavigationBar左侧有两个按钮

时间:2011-07-26 09:54:26

标签: iphone objective-c cocoa-touch uinavigationbar uibarbuttonitem

我知道在stackoverflow上有很多类似的问题但我的有点不同。 我会用图像来展示它,因为它更容易理解。 使用这个代码,我从中获取 here,我得到了这个结果:

some problems here

很容易看到屏幕上没有第二个按钮。 我尝试了UIToolbar帧中的负数,但它们不起作用。我不需要任何标题,只能将这些按钮移到左侧。

3 个答案:

答案 0 :(得分:5)

这是一种不同的方法。我创建了一个custom segmented control(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

答案 1 :(得分:0)

答案 2 :(得分:0)

 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];

使用此方法在带有导航的工具栏中显示更多按钮。