注意:::导航栏的背景图片 必须符合 width = 44/64,如果不让背景图片充满上面的状态栏,就必须是44的。
如果导航条加了背景图,那坐标原点在导航条下方。如果不加,坐标原点不变。
/// 导航栏的封装
- (void)setItemWithController:(UIViewController *)viewController title:(NSString *)title image:(NSString *)image selectImage:(NSString *)selectImage
{
viewController.tabBarItem.title = title;
viewController.tabBarItem.image = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
viewController.tabBarItem.selectedImage = [[UIImage imageNamed:selectImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
viewController.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
NSDictionary *attributes = @{NSForegroundColorAttributeName:[UIColor orangeColor]};
[viewController.tabBarItem setTitleTextAttributes:attributes forState:UIControlStateSelected];
GJFNavigatuonController *nvc = [[GJFNavigatuonController alloc]initWithRootViewController:viewController];
nvc.navigationBar.barTintColor = [UIColor orangeColor];
[self addChildViewController:nvc];
}
//注意: 界面原点在哪儿
// 导航中加了背景图, 原点导航下方
// 没有加背景图, 导航条半透明, 原点屏幕左上角
UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
testLabel.text = @"test";
testLabel.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:testLabel];
self.view.backgroundColor = [UIColor redColor];
//设置导航条
// self表示当前界面
// self.navigationController 当前界面所在导航控制器
//参数2: 表示导航条状态(横屏, 竖屏)
//注意: 图片两种大小
// 如果高度44, 只显示在导航栏区域
// 如果高度64, 扩展到状态栏
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header_bg.png"] forBarMetrics:UIBarMetricsDefault];
//设置导航条上的控件
//注意: 每个视图控制器有属性 self.navigationItem
// 每个界面self.navigationItem, 导航条显示item中数据
//设置标题
self.title = @"Main界面";
self.navigationItem.title = @"主界面";
//注意: 添加不同颜色, 不同字体的title
// 创建Label设置为self.navigationItem.titleView
//设置标题为为图片
// 类型: UIView *
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 35)];
imageView.image = [UIImage imageNamed:@"logo_title.png"];
self.navigationItem.titleView = imageView;
//导航条左侧添加按钮
//UIBarButtonItem常见3种(系统样式,自定义,文本)
//UIBarButtonItem *textItem = [[UIBarButtonItem alloc] initWithTitle:@"分类" style:UIBarButtonItemStylePlain target:self action:@selector(dealConfig:)];
//UIBarButtonItem *systemItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(dealConfig:)];
//自定义按钮
UIButton *configButton = [UIButton buttonWithType:UIButtonTypeCustom];
configButton.frame = CGRectMake(0, 0, 45, 30);
[configButton setBackgroundImage:[UIImage imageNamed:@"main_left_nav.png"] forState:UIControlStateNormal];
[configButton addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *custumItem = [[UIBarButtonItem alloc] initWithCustomView:configButton];
self.navigationItem.leftBarButtonItem = custumItem;
UIButton *photoButton = [UIButton buttonWithType:UIButtonTypeCustom];
photoButton.frame = CGRectMake(0, 0, 45, 30);
[photoButton setBackgroundImage:[UIImage imageNamed:@"main_right_nav.png"] forState:UIControlStateNormal];
[photoButton addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:photoButton];
self.navigationItem.rightBarButtonItem = rightItem;
//添加一个按钮, 打开新的界面
__weak typeof (self) ws = self;
//__weak MainViewController* ws = self;
[self.view addSystemButtonWithFrame:CGRectMake(100, 100, 100, 30) title:@"新界面" action:^(ZTButton *button) {
CategoryViewController *cvc = [[CategoryViewController alloc] init];
//打开新界面
[ws.navigationController pushViewController:cvc animated:YES];
}];
//显示工具栏
//导航控制器默认有一个工具栏, 默认隐藏
self.navigationController.toolbarHidden = YES;
//添加按钮
//
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:nil action:nil];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];
//创建空白item
//UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *spaceCustumItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spaceCustumItem.width = 100;
self.toolbarItems = @[item1,spaceCustumItem,item2,spaceCustumItem,item3]