(二)UINavigationBar(导航栏)

简介: (二)UINavigationBar(导航栏)

1、基本概念

1)和导航控制器一样,是一个容器,用来显示导航栏上的试图,
 2) 竖屏44 横屏32

2、配置外观

1) 设置导航栏样式
    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
    例如:self.navigationController.navigationBar.barStyle =  UIBarStyleBlack;//黑色
  2)设置导航栏是否透明,设为不透明能够屏蔽导航栏对试图frame的影响
    self.navigationController.navigationBar.translucent = NO;//NO代表不透明
     1) 配置背景颜色
    self.navigationController.navigationBar.barTintColor = [UIColor magentaColor];//tint |tɪnt|色彩
      2)配置背景图片
    self.navigationController.navigationBar setBackgroundImage: forBarMetrics:
  3) 改变导航栏上默认按钮颜色
    self.navigationBar.tintColor

3、配置内容

1)每个controller都有专属的navigationItem
 1)通过配置不同控制器的navigationItem让不同控制器的导航栏显示不同的内容
 2)navigationItem的常用属性
   leftBarButtonItem
   rightBarButtonItem
   backBarButtonItem
   title
   titleView
 3) backBarButtonItem是由上一层控制器控制的
 4) 导航栏的prompt属性,通过navigationItem来设置,其主要作用是用于提示用户。比如,用户正在请求网络数据时,提示用户数据正在加载。待加载完成后可以将它的值设置为nil,取消显示。

4)具体的代码做法

给控制器设置标题 
self.stitle = @"测试";
self.navigationItem.title = @"测试";
1.重新设置导航栏的标题样式
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeContactAdd];
[btn1 addTarget:self action:@selector(clickTitle) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.titleView = btn1;
2.给导航设置右边的barbuttonItem
UIBarButtonItem *reginBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(clickReigter)];
self.navigationItem.rightBarButtonItem = reginBarButtonItem;
UIBarButtonItem *style1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(clickReigter)];
3.给右边设置多个barbuttonitem
self.navigationItem.rightBarButtonItems = @[reginBarButtonItem,style1];
//self.navigationItem.leftBarButtonItems =@[reginBarButtonItem,style1];
self.navigationItem.prompt = @"正在努力帮你加载";//增加一个提示(prompt提示)

5)UINavigationBar上面设置的button分类(请认真分析)

1.添加系统自己的button(其他的控制器界面都会显示)
  [self.navigationController.navigationBar addSubview:rigisterBtn];//设置的BarButton在每一个界面都会显示
   2.添加自己当前控制器界面的BarButton(例如,登录页面右上角的注册按钮)
   (1)self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:rigisterBtn];
   (2)添加系统的BarButton(也只有当前系统有这个button)
       UIBarButtonItem *reginBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(clickReigter)];//刷新
self.navigationItem.rightBarButtonItem = reginBarButtonItem;(刷新按钮)
   (3)设置多个按钮,按照数组的方式排列在导航栏上(例如在导航栏上添加刷新和返回按钮)

6).导航栏的出现和隐藏方法(可以设置在界面转换的方法里面)

1.让第二个控制器显示的时候,将导航栏隐藏
 - (void)viewDidAppear:(BOOL)animated{
  [super viewDidAppear:animated];
  [self.navigationController setNavigationBarHidden:YES animated:YES ];
  或者 self.navigationBarHidden= YES;
}
当第二个控制器消失的时候,不隐藏导航栏
- (void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:NO];
 或者 self.navigationBarHidden= NO;
}

7).重新设置导航栏的返回按钮   继承解决都返回的问题(新建一个类,父类还是UIViewController)(定义一个类让所有的控制器都遵守协议,都设置为返回样式,否则进入界面会成为主题放在导航栏的左边)

重新设置导航栏的返回按钮   继承解决都返回的问题
UIBarButtonItem *customBackItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self 
self.navigationItem.backBarButtonItem = customBackItem;


目录
相关文章
|
6月前
|
前端开发
顶部导航栏
顶部导航栏
53 0
|
iOS开发
SwiftUI极简教程13:NavigationView导航栏使用
SwiftUI极简教程13:NavigationView导航栏使用
2050 2
SwiftUI极简教程13:NavigationView导航栏使用
|
10天前
Foundation 顶部导航栏7
通过将导航栏放置在带有 `.sticky` 类的 `<div>` 中,可以实现导航栏的绝对定位效果。当页面滚动至该区域时,导航栏会固定在顶部。此外,可以通过 `data-options="sticky_on: small|medium|large"` 属性控制导航栏在特定屏幕尺寸上的固定行为。例如,仅在大屏幕上固定导航栏或在小屏幕和大屏幕上固定导航栏。
|
10天前
Foundation 顶部导航栏6
导航栏可以固定在页面顶部,即使页面滚动,导航栏也会保持在顶部不动。实现方法是将导航栏放置在带有 `class="fixed"` 的 `<div>` 标签内。
|
11天前
|
UED
Foundation 顶部导航栏5
导航栏支持多种交互方式,默认情况下下拉菜单在鼠标悬停时显示,但可通过 `data-options="is_hover: false"` 设置为点击显示。此外,导航栏还支持添加按钮和图标,增强界面功能与美观度。例如,通过引入 Foundation 图标库,可在导航项中加入图标,提升用户体验。
|
12天前
Foundation 顶部导航栏2
顶部导航栏可通过在 `<li>` 元素上添加 `.has-dropdown` 类来设置下拉菜单。示例代码展示了如何创建包含多个链接的下拉菜单,并使用 `.divider` 类来添加分割线。
|
6月前
|
Android开发 计算机视觉 iOS开发
多页面悬停控件和如何获得多UIWindow的页面UIWindow
多页面悬停控件和如何获得多UIWindow的页面UIWindow
38 1
|
6月前
点击UICollectionViewCell和UICollectionView空白处事件响应
点击UICollectionViewCell和UICollectionView空白处事件响应
47 0
|
6月前
|
JavaScript