OC-UINavigationController 导航控制器

1.多VC之间的切换

(多个界面之间的切换)
方式一
两个普通的控制器之间的推出和返回
推出时:使用控制器的 presentViewController 方法, 指定要推出的是谁
返回时:使用控制器的 dismissViewController 方法, 不用指定返回到哪,系统记录着,所以从哪里来的就会返回到哪里去
这里写图片描述
方式二
使用UINavigationController 导航控制器管理它下面的子控制器,由这个管理者负责控制推出显示的新VC,以及返回到前面的VC
推出新的控制器 使用导航控制器的 pushViewController 方法
返回前面的控制器 使用导航控制器的 popViewController 方法

//创建一个导航控制器
    UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:[[MyViewController alloc]init]];
    //设置导航控制器 为 window 的rootViewController
    self.window.rootViewController = navi;
    [self.window makeKeyAndVisible];
MyViewController2 *myVc2 = [[MyViewController2 alloc]init];
    //navigationController 该属性可以获取到管理当前控制器的导航控制器实例
    [self.navigationController pushViewController:myVc2 animated:YES];

2.UINavigationController 导航控制器

配置导航栏 (NavigationBar)
高度:算上状态栏 (Status Bar 本身高20个点) 高64个点
内容:通过navigationItem属性完成配置
中:title/titleView
左:leftBarButtonItem/s
右:rightBarButtonItem/s

//隐藏底部 toolBar
    self.navigationController.toolbarHidden = YES;
//创建一个的 barButtonItem 要求 是 设置title
    UIBarButtonItem *rightItem1 = [[UIBarButtonItem alloc]initWithTitle:@"按键" style:UIBarButtonItemStylePlain target:self action:@selector(click:)];
    //创建一个的 barButtonItem 要求 是系统的 Add 样式
    UIBarButtonItem *rightItem2 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil];

//    self.navigationItem.rightBarButtonItem =  rightItem1;
    self.navigationItem.rightBarButtonItems = @[rightItem1,rightItem2];

    //创建一个不受tintColor影响的图片
    UIImage *leftImage = [[UIImage imageNamed:@"lxh_xiaohaha"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    UIBarButtonItem *leftItem1 = [[UIBarButtonItem alloc]initWithImage:leftImage  style:UIBarButtonItemStylePlain target:nil action:nil];
    self.navigationItem.leftBarButtonItem = leftItem1;


    self.navigationItem.title = @"标题";
    //中间 红色的view 高 40 宽 100 背景红色
    UIView *redView = [self crearView:CGRectMake(0, 0, 100, 40) andBackGroundColor:[UIColor redColor]];
    //子view 1  高 距离父view上下2 宽45 距离父view左边5 背景 绿色
    UIView *greenView = [self crearView:CGRectMake(5, 2, 45, 36) andBackGroundColor:[UIColor greenColor]];
    //子view 2  高 距离父view上下2 宽45 距离父view右边5 背景 蓝色
    UIView *blueView = [self crearView:CGRectMake(50, 2, 45, 36) andBackGroundColor:[UIColor blueColor]];
    [redView addSubview:greenView];
    [redView addSubview:blueView];
//    self.navigationItem.titleView = redView;

    //navigationItem 的设置 只在当前VC中生效
    //navigationBar 的设置 在当前导航控制器下的所有VC中都生效
    //设置导航栏的背景
//    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    //设置 左 右 item 的颜色
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
    //设置导航的样式
//    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

    //换掉前面半透明的图片
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image64"] forBarMetrics:UIBarMetricsDefault];


    //设置工具栏
    //把工具栏显示出来  默认是隐藏
    self.navigationController.toolbarHidden = NO;
    UIBarButtonItem *toolBarItem1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:nil action:nil];
    UIBarButtonItem *toolBarItem2 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:nil action:nil];
    UIBarButtonItem *toolBarItem3 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil];

    //创建木棍特效
    UIBarButtonItem *fixItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    fixItem.width = 50;
    //弹簧特效
    UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

    self.toolbarItems = @[toolBarItem1,fixItem,toolBarItem2,flexibleItem,toolBarItem3,fixItem];

3.UIImageView 图片视图

UIImage (存图片) —> UIImageView(显示图片的视图)
核心属性 image

//创建图片视图 通过该初始化方法创建 图片视图,如果不设置frame,就是用使用图片本身的宽高,做为imageView的frame的宽高
//    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"abc"]];
//    imageView.frame = CGRectMake(50, 200, 200, 200);


    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 200, 300, 200)];
    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"abc%ld",self.imageIndex]];
    imageView.backgroundColor = [UIColor greenColor];
    /*UIViewContentModeScaleToFill, 默认 缩放填充慢 会变形
    UIViewContentModeScaleAspectFit,  不会变形 全部显示图片  imageView可能会留白
    UIViewContentModeScaleAspectFill, 不会变形,imageView不会留白  图片可能会显示不全
     */
    imageView.contentMode = UIViewContentModeScaleAspectFill;
    //第三种 必须配合 切割使用
    imageView.clipsToBounds = YES;
    imageView.tag = IMAGE_TAG;
    [self.view addSubview:imageView];

思考练习

这里写图片描述

发布了52 篇原创文章 · 获赞 5 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/shuan9999/article/details/52467681