如何自定义UINavigationBar

时间:2015-04-17 02:55:08

标签: ios xcode uinavigationbar uinavigationitem

我在自定义UINavigationBar 中苦苦挣扎。我想自定义的原因是因为在不同的视图控制器中可以发生相同的操作。我发布了一些图片作为例子。

Navigation Bar - 1 Navigation Bar - 2 Navigation Bar - 3

从上面的图片中可以看出。我想你明白了我的意思。我一直在努力寻找,但我没有得到我想要的答案。此外,我已经尝试使用 UIView 来实现这一点,它有效,但我不认为这是正确的方法。因此,我需要你们的帮助,引导我走上正确的道路。 :) :)谢谢。

2 个答案:

答案 0 :(得分:0)

您可以像这样将自定义标题视图设置到导航栏。

//To hide default back button
self.navigationItem.hidesBackButton=YES;

//Title View for Navigation
UIView *navTitle1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
[navTitle1 setBackgroundColor:[UIColor lightGrayColor]];

//Left View button and separator
UIButton *backBarButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 44)];
[backBarButton setTitle:@"Back" forState:UIControlStateNormal];

UIView *ttlview1 = [[UIView alloc] initWithFrame:CGRectMake(51, 0, 1, 44)];
[ttlview1 setBackgroundColor:[UIColor darkGrayColor]];


//Center view with two buttons and seprator for them
UIView *middleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 121, 44)];
[middleView setBackgroundColor:[UIColor clearColor]];
[middleView setCenter:navTitle1.center];

UIButton *postBarButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 44)];
[postBarButton setTitle:@"Post" forState:UIControlStateNormal];

UIView *ttlview2 = [[UIView alloc] initWithFrame:CGRectMake(middleView.frame.size.width/2, 0, 1, 44)];
[ttlview2 setBackgroundColor:[UIColor darkGrayColor]];

UIButton *memeBarButton = [[UIButton alloc] initWithFrame:CGRectMake((middleView.frame.size.width/2)+1, 0, 60, 44)];
[memeBarButton setTitle:@"Meme" forState:UIControlStateNormal];

[middleView addSubview:ttlview2];
[middleView addSubview:postBarButton];
[middleView addSubview:memeBarButton];

//Right button with seprator before that
UIView *ttlview3 = [[UIView alloc]     initWithFrame:CGRectMake(self.view.frame.size.width-71, 0, 1, 44)];
[ttlview3 setBackgroundColor:[UIColor darkGrayColor]];

您可以参考THIS了解更多详情。

答案 1 :(得分:0)

您可以使用以下文档从2个视图创建2个自定义UIBarButtonItem:

来自Apple文档:     使用指定的自定义视图初始化新项目。

- (id)initWithCustomView:(UIView *)customView

参数 customView :表示项目的自定义视图。 返回值具有指定属性的新初始化项。

  • 左栏项目:1个视图包含3个按钮:Project,Kiara Paradize,Artist Impression。

  • 右栏项目:1个视图包含4个按钮:注册|登录(用户登录时的配置文件按钮)|汉堡菜单

然后:

  • self.navigationItem.leftBarButtonItem =左起UIBarButtonItem 自定义视图
  • self.navigationItem.rightBarButtonItem =右侧自定义视图中的UIBarButtonItem