如何在 UINavigationBar 上设置自定义按钮?

Posted

技术标签:

【中文标题】如何在 UINavigationBar 上设置自定义按钮?【英文标题】:How can I set Custom Button where I want on UINavigationBar? 【发布时间】:2011-09-09 13:56:26 【问题描述】:

我有一个 UINavigationBar 视图

导航栏只允许我在固定位置的按钮

在导航栏的侧面有固定位置..

我想自定义按钮的位置... 任何想法......会帮助我 提前致谢

【问题讨论】:

【参考方案1】:

UINavigationItem不能自定义按钮的位置,只能设置rightBarButtonItem和leftBarButtonItem。

如果你真的需要这个,可以考虑使用工具栏。

如果您需要像导航栏的后退按钮一样的后退按钮,请创建自定义按钮并使用图像。

这里有一个PSD 会有所帮助。

【讨论】:

【参考方案2】:

您可以在 UINavigationItem 中放置自定义按钮。这就是我在右侧添加三个按钮的方式:

// create a toolbar to have three buttons in the right (thanks Mart!)
tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 157, 44.01)];

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 1.0, 157.0, 44.1)];
[imgView setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"NavigationBarBackground" ofType:@"png"]]];
[tools addSubview:imgView];
[tools sendSubviewToBack:imgView];
[tools setTintColor:[UIColor colorWithRed:127/255.0 green:184/255.0 blue:72/255.0 alpha:1.0]];
[imgView release];

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

UIBarButtonItem* bi = [[UIBarButtonItem alloc] 
                       initWithTitle:@"Filter" style:UIBarButtonItemStyleBordered target:self action:@selector(showFilter:)];

[buttons addObject:bi];
[bi release];

bi = [[UIBarButtonItem alloc]
      initWithImage:[UIImage imageNamed:@"Map.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(showMap:)];

[buttons addObject:bi];
[bi release];

bi = [[UIBarButtonItem alloc] 
      initWithImage:[UIImage imageNamed:@"Favourite.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(saveSearch:)];
[buttons addObject:bi];
[bi release];

[tools setItems:buttons animated:NO];

[buttons release];

rightBarButton = nil;
rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:tools];

self.navigationItem.rightBarButtonItem = rightBarButton;

【讨论】:

以上是关于如何在 UINavigationBar 上设置自定义按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UINavigationBar 上设置自定义按钮?

如何防止在横向上自动调整 UINavigationBar 的大小

在 UIStatusBar 上设置与 UINavigationBar 相同的背景颜色

如何在IOS 11中为新的大型条设置渐变颜色的UINavigationbar?

如何使用渐变颜色设置 UINavigationbar?

UINavigationBar 自定义标题视图