• iOS阶段学习第31天笔记(UINavigationBar介绍)


    iOS学习(UI)知识点整理

     

    一、UINavigationBar 的介绍 

    1)概念:UINavigationBar 是用于定义导航栏按钮的一个类对象 

    2)在使用UINavigationBar之前必须先初始化导航栏 实例代码:

     1 //初始化导航栏
     2 FirstViewController *firstVC = [[FirstViewController alloc] init];
     3 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:firstVC];
     4 self.window.rootViewController = nav;
     5 
     6 //appearance一定要在初始化之前使用
     7 //修改默认的UINavigationBar的导航条背景颜色,
     8 [[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
     9 
    10 //修改默认的导航栏文字即图标颜色
    11 [[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
    12     
    13 //设置导航栏背景图片
    14 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"icon"]   forBarMetrics:UIBarMetricsDefault];

     3)setNavigationBarHidden 设置隐藏导航栏  例如: 

    1 [self.navigationController setNavigationBarHidden:YES];

     4)title 设置导航栏标题  例如: 

    1 self.title = @“First View”;
    2 //注意:在一处做此设置后,后面的视图控制器如未作设置也会使用此标题

     5)titleView 用于设置导航栏中间的视图 例如: 

     1    UIView *navBarView = [[UIView alloc] init];
     2     navBarView.frame = CGRectMake(0, 0, 100, 30);
     3     navBarView.backgroundColor = [UIColor clearColor];
     4     navBarView.layer.cornerRadius = 8.0f;
     5     navBarView.clipsToBounds = YES;
     6     
     7     UIButton *btn1 = [[UIButton alloc] init];
     8     btn1.frame = CGRectMake(0, 0, 50, 30);
     9     btn1.backgroundColor = [UIColor blueColor];
    10     [btn1 setTitle:@"消息" forState:UIControlStateNormal];
    11     [btn1 addTarget:self action:@selector(btn1Tapped:)  forControlEvents:UIControlEventTouchUpInside];
    12     btn1.tag = 1000;
    13     [navBarView addSubview:btn1];
    14     
    15     UIButton *btn2 = [[UIButton alloc] init];
    16     btn2.frame = CGRectMake(50, 0, 50, 30);
    17     btn2.backgroundColor = [UIColor blueColor];
    18     [btn2 setTitle:@"电话" forState:UIControlStateNormal];
    19     [btn2 addTarget:self action:@selector(btn1Tapped:) forControlEvents:UIControlEventTouchUpInside];
    20     btn2.tag = 1001;
    21     [navBarView addSubview:btn2];
    22 
    23     //在导航栏中的中间位置加入我们自定义的view,
    24     //程序会把我们设置的view自动居中
    25     self.navigationItem.titleView = navBarView;

    6)UIBarButtonItem 导航栏上的按钮元素  常用的系统自带的Bar有 

    /*
    * UIBarButtonSystemItemDone  按钮样式为文字Done、
    * UIBarButtonSystemItemAdd 按钮样式为图片的加号
    *UIBarButtonSystemItemCamera 按钮样式是图片的照相机
         
    *UIBarButtonSystemItemFixedSpace 是一个占位符 ,可以设置width
    *UIBarButtonSystemItemFlexibleSpace 是一个占位符,固定宽度,导航栏上单独一个按钮
    */

    例如:

    1 //系统自带照相机按钮
    2 UIBarButtonItem *button1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera
    target:self action:@selector(barButtonTapped:)];
    3 4 //占位符按钮 5 UIBarButtonItem *button2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
    target:self action:@selector(barButtonTapped:)];

    7)rightBarButtonItem 设置导航栏右侧单个按钮 例如:

    1 self.navigationItem.rightBarButtonItem = button1;

    8)rightBarButtonItems 设置导航栏右侧多个按钮 例如:

    1 self.navigationItem.rightBarButtonItems = @[button2, button1];

    9)edgesForExtendedLayout 设置view的坐标都是从导航栏左下点开始计算 防止导航栏遮挡内容区域
    例如:

    1 self.edgesForExtendedLayout = UIRectEdgeNone;

    10)initWithTitle 使用文字作为导航栏按钮 例如:

    1 UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain
    target:self action:@selector(back)];

    11)initWithImage 使用图片作为导航栏按钮 例如:

    1 UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"st_logout"] 
    style:UIBarButtonItemStylePlain target:self action:@selector(back)];
    2 self.navigationItem.leftBarButtonItem = barButtonItem;

    12)setToolbarHidden 设置导航栏显示与隐藏 例如: 

    1  [self.navigationController setToolbarHidden:NO];

    13)动画效果实现 代码:

     1 - (void)viewDidLoad {
     2     [super viewDidLoad];
     3     self.view.backgroundColor=[UIColor whiteColor]; 
     4 
     5     firstView=[[UIView alloc]init];
     6     firstView.frame=CGRectMake(0, 20, 50, 50);
     7     firstView.backgroundColor=[UIColor blackColor];
     8     [self.view addSubview:firstView]; 
     9     for (int i=0; i<4; i++) { 
    10         UIButton *btn=[[UIButton alloc]init]; 
    11         btn.frame=CGRectMake(20,50, CGRectGetWidth(self.view.frame), 30); 
    12     } 
    13     [self moveFirstViewToRight];
    14 }
    15 
    16 -(void)moveFirstViewToRight{ 
    17     //UIview 动画
    18     [UIView animateWithDuration:3.f animations:^{
    19         firstView.frame=CGRectMake(self.view.frame.size.width-firstView.frame.size.width, 20, 50, 50);
    20     }];
    21 }
     
  • 相关阅读:
    LeetCode-Minimum Path Sum
    LeetCode-Validate Binary Search Tree
    LeetCode-Recover Binary Search Tree
    LeetCode-Valid Parentheses
    LeetCode-Generate Parentheses
    LeetCode-4Sum
    BZOJ 2295: [POJ Challenge]我爱你啊
    BZOJ 2725: [Violet 6]故乡的梦
    BZOJ 3672: [Noi2014]购票
    BZOJ 4327:[JSOI2012]玄武密码
  • 原文地址:https://www.cnblogs.com/ChinaKingKong/p/4696301.html
Copyright © 2020-2023  润新知