您的当前位置:首页设置导航条的基本内容

设置导航条的基本内容

2024-12-11 来源:哗拓教育
#import "OneViewController.h"
#import "TwoViewController.h"

@interface OneViewController ()

@end

@implementation OneViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //设置标题
    //self.title = @"根控制器";
    self.navigationItem.title = @"根控制器";

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"左侧" style:0 target:self action:@selector(BtnClick)];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"右侧" style:0 target:self action:@selector(BtnClick)];

    // 图片的方式,系统会把图片默认渲染成蓝色,显示会有问题
    // 所以要去Assets.xcassets中配置一下该图片的渲染方式
//    UIImage *image = [UIImage imageNamed:@"navigationbar_friendsearch"];
//    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:0 target:self action:@selector(BtnClick)];

    // 按钮用到图片的时候,可以不用去配置图片的渲染方式,显示不会有问题

    UIButton *btn = [[UIButton alloc] init];
    [btn setImage:[UIImage imageNamed:@"navigationbar_friendsearch"] forState:UIControlStateNormal];
    [btn setImage:[UIImage imageNamed:@"navigationbar_friendsearch_highlighted"] forState:UIControlStateHighlighted];

    //导航条上面自定义的控件必须得要有尺寸大小.
    //自适应大小
    [btn sizeToFit];
//
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];

    self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];

}
  • 导航控制器所有子控制器以栈的形式存放
  • 导航控制器显示的是栈顶控制器的View
  • push一个控制器的时候,之前的view会从导航控制器的View中移除,但是因为对应的控制器还保存在控制器的栈里面,所以不会销毁 移除的View,pop一个控制器的时候,之前的view会从导航控制器的View中移除,因为对应的控制器没有保存在控制器的栈里面,所以会销毁 移除的View
// 当前类或者它的子类第一次使用的时候调用.
+ (void)initialize {

    // 获取整个应用程序下所有的导航条.
    //UINavigationBar *bar = [UINavigationBar appearance];

    // 获取指定类下面的导航条
    UINavigationBar *bar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[self class]]];

    //设置导航条
    //设置背景(设置背影图片时, 必须得要使用)
    [bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
    //设置导航条上的标题颜色
    //设置主题颜色
    //[nav.navigationBar setTintColor:[UIColor whiteColor]];
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    dict[NSForegroundColorAttributeName] = [UIColor whiteColor];
    dict[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20];

    [bar setTitleTextAttributes:dict];

}

// 当前类或者它的子类第一次使用的时候调用.
+ (void)initialize {

    //获取整个应用程序下所有的导航条.
    //UINavigationBar *bar = [UINavigationBar appearance];

    //获取指定类下面的导航条
    UINavigationBar *bar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[XMGNavigationController class]]];

    //设置导航条
    //设置背景(设置背影图片时, 必须得要使用)
    [bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
    //设置导航条上的标题颜色

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    dict[NSForegroundColorAttributeName] = [UIColor greenColor];
    dict[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20];

    [bar setTitleTextAttributes:dict];

    [bar setTintColor:[UIColor whiteColor]];


    UIBarButtonItem *barItem = [UIBarButtonItem appearance];
    NSMutableDictionary *dict2 = [NSMutableDictionary dictionary];
    dict2[NSForegroundColorAttributeName] = [UIColor blueColor];
    [barItem setTitleTextAttributes:dict2 forState:UIControlStateNormal];

    // 让“我的彩票”四个字往上偏移64,使其隐藏
//    [barItem setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -64) forBarMetrics:UIBarMetricsDefault];
}



显示全文