iOS-UINavigation

注意:::导航栏的背景图片 必须符合 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]

你可能感兴趣的:(iOS-UINavigation)