如何自定义iOS UINavigationItem?

时间:2015-05-05 08:19:04

标签: ios objective-c uinavigationbar uinavigationitem

我认为这是重复的,但经过研究后我无法理解如何自定义UINavigationItem

我有自定义ViewControllerVC),它实现了自定义类SWRevealViewController(我需要创建滑动菜单)。 我有Menu VC,对于菜单的每个元素,我为菜单的每个元素Navigation VC添加了自定义VC

要工作,每个后退按钮必须在Designer中定义,并且要有插座(我还添加了navigation item的插座):

@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnSidebareMenu;
@property (weak, nonatomic) IBOutlet UINavigationItem *niTitle;

在我的.m文件中,我有以下代码:

self.navigationItem.title = @"Custom title";

self.navigationController.topViewController.navigationItem.leftBarButtonItem = self.btnSidebareMenu;
self.btnSidebareMenu.enabled=TRUE;
self.btnSidebareMenu.style=UIBarButtonSystemItemRefresh;

为每个Menu element VC自定义按钮和标题。

我使用此代码管理导航到菜单:

// Manage menu button
SWRevealViewController *revealViewController = self.revealViewController;
if ( revealViewController )
{
    [self.btnSidebareMenu setTarget: self.revealViewController];
    [self.btnSidebareMenu setAction: @selector( revealToggle: )];
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}

导航没问题,但我无法自定义导航栏的外观:

我收到了这个:

enter image description here

,但我需要这样的事情:

enter image description here

有任何建议如何做到这一点?

修改

好的,我设法显示了适当大小的图片,以更改导航栏的颜色,但我无法使用status barnavigation bar发出问题。当我设置navigation bar的背景颜色时,它也填充status bar。我看到不同的解决方案,但它们不起作用或我不理解它们。

备注:我有几个页面不属于我Navigation controller为白色的status bar。我的所有页面都需要这样。 (我需要它们看起来像图像2,状态栏是白色,导航部分是蓝色)。

2 个答案:

答案 0 :(得分:2)

使用此选项可更改图标的颜色:

    self.navigationController.navigationBar.tintColor = [UIColor redColor];

应用于导航项和条形按钮项的色调颜色。

答案 1 :(得分:1)

对于导航栏按钮,我猜您可以使用barButtonItemstoryBoard拖放到导航栏中。然后,您可以设置image的{​​{1}}属性。

另请注意,您使用的图像应该是精确的尺寸,因为它不会按比例缩放。因此,如果您的图片被称为barButtonitem,那么您的资产中应该包含以下两个文件:

  1. sandwich.png - 22x22像素
  2. sandwich.png - 44x44像素
  3. 另请参阅thisthis

    更新:要使图标为白色或任何其他颜色,您可以更改故事板中sandwich@2x.png的色调颜色。

    enter image description here