zoukankan      html  css  js  c++  java
  • ios UINavigationController

    UINavigationController 导航控制器
    配置导航栏 (NavigationBar)
    ** 高度:**算上状态栏 (Status Bar 本身高20个点) 高64个点
    内容:通过navigationItem属性完成配置

    中:title/titleView
    左:leftBarButtonItem/s
    右:rightBarButtonItem/s

    ** toolBar工具栏:**
    高度44个点

    UINavigationController 导航控制器:(写于代理方法里面)
    通过navigationItem属性完成配置:

    self.navigationController.navigationBarHidden = !self.navigationController.navigationBarHidden;//设置导航栏的隐藏属性
    也可以使用set方法:
    [self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden animated:YES];
    [self.navigationController setToolbarHidden:!self.navigationController.toolbarHidden animated:YES]; //隐藏底部 toolBar
     self.navigationItem.title = @"新闻";
    UIBarButtonItem *rightItem1 = [[UIBarButtonItem alloc]initWithTitle:@"按键" style:UIBarButtonItemStyleBordered 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,rightItem1,rightItem1,rightItem2];
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    
    
        
    //创建一个导航控制器
    UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:[[MyViewController alloc]init]];
    //设置导航控制器 为 window 的rootViewController
    self.window.rootViewController = navi;
    [self.window makeKeyAndVisible];
    return YES;
    }
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        MyViewController2 *myVc2 = [[MyViewController2 alloc]init];
        //navigationController 该属性可以获取到管理当前控制器的导航控制器实例
        [self.navigationController pushViewController:myVc2 animated:YES];
    /      [self.navigationController popViewControllerAnimated:YES];
    }
    
     //创建一个不受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;
    
    titleView:
     //中间 红色的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;
    -(UIView*)crearView:(CGRect)frame andBackGroundColor:(UIColor*)color {
        UIView *view  = [[UIView alloc]init];
        view.frame = frame;
        view.backgroundColor = color;
        return view;
    }
    
    
    //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];
    
    
        //设置工具栏toolBar
        //把工具栏显示出来  默认是隐藏
        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件事,代理方3件事:
    委托方:

    //1. 制定协议:
    @protocol RegisterViewControllerDelegate  <NSObject>
    //代理方法的第一个参数是委托方本身
    -(void)registerFinish:(RegisterViewController*)registerVC userInfo:(UserInfo*)info;
    @end
    
    //2. 设置代理人属性:
    @property(nonatomic,weak)id<RegisterViewControllerDelegate> delegate;
    
    代理方:
    1. 遵守协议:
    @interface LoginViewController () <RegisterViewControllerDelegate>
    2. 实现代理方法:
    -(void)registerFinish:(RegisterViewController *)registerVC userInfo:(UserInfo *)info {
        NSLog(@"%@ 委托我 执行代理方法",registerVC.name);
        self.userNameField.text = info.username;
        self.pwdField.text = info.password;
    }
    
    成功的三大原则: 1、坚持 2、不要脸 3、坚持不要脸
  • 相关阅读:
    281. Zigzag Iterator
    298. Binary Tree Longest Consecutive Sequence
    482. License Key Formatting
    361. Bomb Enemy
    373. Find K Pairs with Smallest Sums
    304. Range Sum Query 2D
    308. Range Sum Query 2D
    307. Range Sum Query
    303. Range Sum Query
    247. Segment Tree Query II
  • 原文地址:https://www.cnblogs.com/xulinmei/p/7420245.html
Copyright © 2011-2022 走看看