0

我是 iOS 编程新手,我想知道是否可以将 4 个条形按钮放入UINavigationBar?我尝试了一些在堆栈溢出时发现的方法,但buttons位置不相等。

这是一个示例屏幕截图

在此处输入图像描述.

我用来编码导航栏的方法是:

UIToolBar *tools = [[UIToolBar alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
UIImage *backImage = [UIImage imagedName:@"backIcon.png"];
UIImage *shareImage = [UIImage imagedName:@"shareIcon.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backImage forState:UIControlStateNormal];

// create the button and assign the image to the leftsidebutton
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, backImage.size.width, backImage.size.height);

[backButton addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];

UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom];
[shareButton setImage:shareImage forState:UIControlStateNormal];
shareButton.frame = CGRectMake(0, 0, shareImage.size.width, shareImage.size.height);

//create space between the buttons
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL];

UIBarButtonItem *customBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
UIBarButtonItem *shareBarButton = [[UIBarButtonItem alloc] initWithCustomView:shareButton];
self.navigationItem.hidesBackButton = YES;
NSArray *leftActionButtonItems = @[customBarButton, bi, shareBarButton];
[tools setItems:leftActionButtonItems animated:NO];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];

我做了同样的事情,rightBarButtonItem但效果不太好。

任何帮助将不胜感激!谢谢!

4

4 回答 4

2

试试这个:

编辑:它显示正确检查:

在此处输入图像描述

取 .h 文件:

  UIToolbar *toolBar_T;
  UIBarButtonItem *item1,*item2,*item3,*item4;

取 .m 文件:

toolBar_T=[[UIToolbar alloc] init];
toolBar_T.frame=CGRectMake(0,5,168, 44);
[self.view addSubview:toolBar_T];

UIButton *button0 = [UIButton buttonWithType:UIButtonTypeCustom];
[button0 setImage:[UIImage imageNamed:@"1.png"]  forState:UIControlStateNormal];
[button0 addTarget:self action:@selector(button0:) forControlEvents:UIControlEventTouchUpInside];
button0.frame = CGRectMake(0, 7, 35,29);
item1 = [[UIBarButtonItem alloc] initWithCustomView:button0];

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[button1 setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];
[button1 addTarget:self action:@selector(button1:) forControlEvents:UIControlEventTouchUpInside];
button1.frame = CGRectMake(0, 7, 35,29));
item2 = [[UIBarButtonItem alloc] initWithCustomView:button1];


UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
[button2 setImage:[UIImage imageNamed:@"3.png"] forState:UIControlStateNormal];
[button2 addTarget:self action:@selector(button2:) forControlEvents:UIControlEventTouchUpInside];
button2.frame = CGRectMake(0, 7, 35,29);
item3 = [[UIBarButtonItem alloc] initWithCustomView:button2];

 UIButton *button3 = [UIButton buttonWithType:UIButtonTypeCustom];
[button3 setImage:[UIImage imageNamed:@"4.png"] forState:UIControlStateNormal];

[button3 addTarget:self action:@selector(button3:) forControlEvents:UIControlEventTouchUpInside];
button3.frame = CGRectMake(0, 7, 35,29);
item4 = [[UIBarButtonItem alloc] initWithCustomView:butto3];

NSArray *buttons = [NSArray arrayWithObjects: item1, item2,item3, nil];

[toolBar_T setItems: buttons animated:NO];
toolBar_T.barStyle=-1;// For Clear backgroud
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolBar_T];

希望它会有所帮助。

快乐的编码...

于 2013-10-29T09:20:16.687 回答
1

你可以试试这样...

-(void)setupToolbarButtons:(UIViewController *)navC
    {

        //create a toolbar in the right

        UIToolbar *tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 135, 44.01)];
        tools.delegate = self;
        tools.barTintColor = [UIColor clearColor];


        //create the array to hold the buttons, which then gets added to the toolbar
        NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:4];

        //create a standart 'play' button
        UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:nil];
        [buttons addObject:bi];
        [bi release];

        //create a standart 'stop' button
        bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:nil];
        [buttons addObject:bi];
        [bi release];

        //create a standart 'fast forward' button
        bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:nil];
        [buttons addObject:bi];
        [bi release];

        //create a standart 'pause' button
        bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:nil];
        [buttons addObject:bi];
        [bi release];

        //stick the buttons in the toolbar
        [tools setItems:buttons animated:NO];
        [buttons release];

        //and put the toolbar in the nav bar
        navC.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
        [tools release];

    }

...如果需要,您也可以添加一个垫片

bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[buttons addObject:bi];
[bi release];

如果垂直间距有问题,那么添加这个

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar
{
    return UIBarPositionTopAttached;
}
于 2013-10-29T10:17:31.110 回答
0

试试下面的代码

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:customBarButton, bi, shareBarButton, nil];

self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:BUTTON OBJECTS, nil];
于 2013-10-29T08:57:19.207 回答
0

UINavigationBar is 继承自 UIView,因此您可以简单地添加任何对象。

于 2013-10-29T08:51:34.270 回答