在ios中自定义导航栏

Posted

技术标签:

【中文标题】在ios中自定义导航栏【英文标题】:Customize Navigation Bar in ios 【发布时间】:2014-09-19 06:58:05 【问题描述】:

我在故事板中使用了导航控制器和导航栏。

我想为一个视图自定义导航栏,如下导航栏右侧。

我尝试过的代码

    UIButton *btn_list=[UIButton buttonWithType:UIButtonTypeCustom];
    btn_list.frame=CGRectMake(0, 0, 60, 30);
    [btn_list setTitle:@"Liste" forState:UIControlStateNormal];
    [btn_list setBackgroundImage:[UIImage imageNamed:@"red-left.png"] forState:UIControlStateNormal];
    [btn_list setBackgroundImage:[UIImage imageNamed:@"black-left.png"] forState:UIControlStateSelected];
    UIBarButtonItem *list_bar=[[UIBarButtonItem alloc]initWithCustomView:btn_list];
    
    UIButton *btn_map=[UIButton buttonWithType:UIButtonTypeCustom];
    btn_map.frame=CGRectMake(0, 0, 60, 30);
    [btn_map setTitle:@"Karte" forState:UIControlStateNormal];
    [btn_map setBackgroundImage:[UIImage imageNamed:@"red-right.png"] forState:UIControlStateNormal];
    [btn_list setBackgroundImage:[UIImage imageNamed:@"black-right.png"] forState:UIControlStateSelected];
    UIBarButtonItem *map_bar=[[UIBarButtonItem alloc]initWithCustomView:btn_map];

    self.navigationItem.rightBarButtonItems=[[NSArray alloc]initWithObjects:list_bar,map_bar, nil];

试过代码的问题:两个按钮之间有空格。

我怎样才能做到这一点?

【问题讨论】:

请澄清您想将段控件用作条形按钮项。我说的对吗? @sreekanthk,是的,你是对的 然后你使用两个按钮而不是使用 UISegmentControl 但在分段控制中我无法设置自定义图像。:( 缩小你的图片大小, 【参考方案1】:

只使用分段控制:你有一个完整的例子HERE

【讨论】:

但在分段控制中我无法设置自定义图像。:( @user2893370 不,你可以自定义SegmentedControl检查***.com/questions/21603822/…和***.com/questions/18900034/…【参考方案2】:

用自定义视图声明一个段控件

UISegmentedControl *control = (UISegmentedControl *) [segmentBarButton customView];

然后将其添加到 barbuttonitem 视图中

UIBarButtonItem *segmentBarButton=[[UIBarButtonItem alloc] initWithCustomView:control];

不要忘记编写与段控制自定义视图相关的行,例如您的要求将红色或黑色图像添加到段 0 或 1。

【讨论】:

以上是关于在ios中自定义导航栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11导航栏自定义后退按钮问题

iOS系统导航栏自定义标题动画跳变解析

iOS系统导航栏自定义标题动画跳变解析

IOS/Objective-C:导航栏自定义Segue效果对比Show Segue

在ios中自定义导航栏

在 iOS 8 中自定义 PeoplePicker NavigationController 导航栏