如何自定义iOS UINavigationItem?
How to customize iOS UINavigationItem?
我想这是重复的,但经过研究我无法理解如何自定义 UINavigationItem
。
我有自定义 ViewController
(VC
),它实现了自定义 class 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];
}
导航没问题,但我无法自定义导航栏的外观:
我收到这个:
,但我需要这样的东西:
有什么建议吗?
编辑:
好的,我设法显示了适当大小的图像,更改了导航栏的颜色,但我无法使用 status bar
和 navigation bar
。当我设置 navigation bar
的背景颜色时,它也会填充 status bar
。我看到了不同的解决方案,但它们不起作用或者我不理解它们。
REMARK: 我有几个不属于 Navigation controller
的页面,其中我的 status bar
是白色的。我需要我的所有页面也是如此。 (我需要它们看起来像图 2,其中状态栏是白色的,导航部分是蓝色的)。
使用这个来改变图标的颜色:
self.navigationController.navigationBar.tintColor = [UIColor redColor];
应用于导航项和栏按钮项的色调。
对于导航栏按钮,我想您可以使用 storyBoard
将 barButtonItem
拖放到导航栏中。然后就可以设置image
属性的barButtonitem
.
另请注意,您为此使用的图像应该是精确尺寸,因为它不会按比例缩放。因此,如果您的图片名为 sandwich.png
,那么您的资产中应该包含以下两个文件:
sandwich.png
- 22x22 像素
sandwich@2x.png
- 44x44 像素
另请参阅this and this
更新: 要使图标变为白色或任何其他颜色,您可以更改故事板中 barButtonItem
的色调。
我想这是重复的,但经过研究我无法理解如何自定义 UINavigationItem
。
我有自定义 ViewController
(VC
),它实现了自定义 class 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];
}
导航没问题,但我无法自定义导航栏的外观:
我收到这个:
,但我需要这样的东西:
有什么建议吗?
编辑:
好的,我设法显示了适当大小的图像,更改了导航栏的颜色,但我无法使用 status bar
和 navigation bar
。当我设置 navigation bar
的背景颜色时,它也会填充 status bar
。我看到了不同的解决方案,但它们不起作用或者我不理解它们。
REMARK: 我有几个不属于 Navigation controller
的页面,其中我的 status bar
是白色的。我需要我的所有页面也是如此。 (我需要它们看起来像图 2,其中状态栏是白色的,导航部分是蓝色的)。
使用这个来改变图标的颜色:
self.navigationController.navigationBar.tintColor = [UIColor redColor];
应用于导航项和栏按钮项的色调。
对于导航栏按钮,我想您可以使用 storyBoard
将 barButtonItem
拖放到导航栏中。然后就可以设置image
属性的barButtonitem
.
另请注意,您为此使用的图像应该是精确尺寸,因为它不会按比例缩放。因此,如果您的图片名为 sandwich.png
,那么您的资产中应该包含以下两个文件:
sandwich.png
- 22x22 像素sandwich@2x.png
- 44x44 像素
另请参阅this and this
更新: 要使图标变为白色或任何其他颜色,您可以更改故事板中 barButtonItem
的色调。