定制化UINavigationBar

2023-11-07

//FirstViewController


// 定制化UINavigationBar

- (void)customNavigationBar {

    // 按钮被挡住,原因是:navigationbar的透明度默认为YES

    // 先取出navigationbar

    UINavigationBar *bar =self.navigationController.navigationBar;

    // 设置透明度为no

    bar.translucent =NO;

    /*

     如果透明度为yes,下方子视图控制器的(0,0)点在整个屏幕的左上方

     如果透明度为no,下方子视图控制器的(0,0)点在导航条的下方,左上方

     navigationbar 高度:44

     */

    // 设置导航条的title

    self.title =@"第一视图";

    // 设置背景图

    UIImage *img = [UIImageimageNamed:@"header_bg"];

    [bar setBackgroundImage:imgforBarMetrics:UIBarMetricsDefault];

    /* UIBarMetricsDefault :在视图无论是横屏还是竖屏的情况下,都显示此背景图

       UIBarMetricsCompact : 只有在视图是横屏的情况下,显示此背景图

    */

    // 因为背景图设置了44高度,所以状态栏没有背景图

    // 设置一个高度为64背景图,使状态栏与导航条同色

    [bar setBackgroundImage:[UIImageimageNamed:@"header_bg64"]forBarMetrics:UIBarMetricsDefault];

    

    // 设置导航条的背景色 ,如果要显示,背景图不能设置

    [bar setBarTintColor:[UIColorgreenColor]];

}


// 在页面触碰事件中,隐藏navigationbar

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [self.navigationControllersetNavigationBarHidden:YESanimated:YES];

}



//SecondViewController

// 定制本视图的导航项

- (void)customNavigationItem {

    // 1. 取出当前视图控制器的导航项

    UINavigationItem *item =self.navigationItem;

    /* item用于显示此视图的标题,以及标题左,右两侧的操作按钮*/

    item.title =@"更改后的标题";

    /* item.title等同于 self.title ,也就是说self.title实际上设置的是导航项的title */

    // 带样式的标题

    UILabel *lb = [[UILabelalloc] initWithFrame:CGRectMake(0,0, 100,40)];

    // 设置lb的属性

    lb.text =@"再次更改的标题";

    lb.backgroundColor = [UIColororangeColor];

    lb.textColor = [UIColorwhiteColor];

    // lb赋值给item的标题视图

    item.titleView = lb;

    

    // 开始自定义设置标题左侧的按钮/按钮组

    // 创建左侧按钮

    UIBarButtonItem *buttonItem1 = [[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAddtarget:selfaction:@selector(itemClick:)];// 系统按钮类型

    UIBarButtonItem *buttonItem2 = [[UIBarButtonItemalloc] initWithTitle:@"文字"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(item2Click:)];//以文字创建

    UIView *uv = [[UIViewalloc] initWithFrame:CGRectMake(0,0, 40,40)];

    uv.backgroundColor = [UIColorgrayColor];

    UIBarButtonItem *buttonItem3 = [[UIBarButtonItemalloc] initWithCustomView:uv];//自定义视图创建

    // ios7以后,使用UIImage对象初始化buttonitem,图片不显示。

//    [UIBarButtonItem alloc] initWithImage:<#(nullable UIImage *)#> style:<#(UIBarButtonItemStyle)#> target:<#(nullable id)#> action:<#(nullable SEL)#>

    

    // 设置左侧按钮组

    item.leftBarButtonItems =@[buttonItem1,buttonItem2,buttonItem3];

    // 设置单个左侧按钮

    item.leftBarButtonItem = buttonItem1;

    

    // 右侧按钮组,于左侧按钮组设置方式相同,

    // 练习,设置右侧按钮组,观察按钮的排放顺序与数组中的顺序是否一致

    

    //返回键

    //item.backBarButtonItem

    // 在此视图设置返回按钮,自定义样式,是无效的。一般情况下可以在leftbarbutttonitems中设置代替。

    // 如果非要使用backBarButtonItem,那么需要在跳转到本视图之前就设置,而不是在本视图设置

}


// 左侧第一个按钮的点击事件

- (void)itemClick:(UIBarButtonItem *)item {

    NSLog(@"谁点我了?");

}

// 左侧第二个按钮的点击事件

- (void)item2Click :(UIBarButtonItem *)item {

    [self.navigationControllerpopViewControllerAnimated:YES];

}


// 添加视图触碰事件处理,目的:将导航条显示

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [self.navigationControllersetNavigationBarHidden:NOanimated:YES];

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定制化UINavigationBar 的相关文章

随机推荐

  • 一句话说明白IRQL

    Windows操作系统运行的处理器架构中 硬件产生信号发给可编程中断控制器 中断控制器发送中断请求 IRQ 及相应的优先级给CPU CPU设置一个掩码 mask 屏蔽低优先级的其他中断请求到挂起状态 pending state 直到CPU释
  • 两台windows电脑之间通信

    一台做客户端 一台做服务端 服务端 import os import socket import time from test pip import pip test def server socket while True ip port
  • 微信小程序农历阳历日期选择器选中日期同时获取对应农/阳历日期 这个demo问题的修改

    修改以下三个文件完成BUG的修复 selectdata js文件中将农历转阳历的代码修改成 以下是原selectdata js中的代码 搜索 calendarConverter lunar2solar 文件中就一处用到 释义 用到阴历转阳历
  • Python爬虫+数据可视化

    一 工具和环境 IDE Pycharm 第三方模块 1 jieba 主要功能 处理分词 2 requests 主要功能 获取接口数据 3 sqlite3 主要功能 进行数据库相关操作 4 matplotlib主要功能 进行绘图 5 ecah
  • R获知颜色名称及对应颜色代码

    pdf D colors bar pdf height 120 par mar c 0 10 3 0 0 1 yaxs i barplot rep 1 length colors col rev colors names arg rev c
  • docker container 设置自动重启,自动执行

    编写自动执行的脚本 start server sh 脚本内容是你要执行的内容 BASE PATH data3 image generate export PYTHONPATH PYTHONPATH BASE PATH cd BASE PAT
  • 2021-07-22-第一次实训(HTML+CSS+JS)

    layout post 标题配置 title 第一次实训 HTML CSS JS 时间配置 date 2021 07 22 11 00 00 0800 目录配置 categories JavaWeb 标签配置 tag 学习笔记 conten
  • 5 区块链的缺点及面临的问题

    5 1 区块链的缺点 任何事物都有两面性 区块链也不例外 之前介绍了区块链的去中心化 集体维护 解决信任问题等种种好处 现在咱们来看一下区块链的缺点 1 无隐私性 在区块链公有链中 每一个参与者都能够获得完整的数据备份 所有交易数据都是公开
  • 一文了解社区发现算法

    最近在调研社区发现图聚类在区域划分中的应用 将一些编辑汇总的信息记录如下 社团划分了解 社区是什么 在社交网络中 用户相当于每一个点 用户之间通过互相的关注关系构成了整个网络的结构 在这样的网络中 有的用户之间的连接较为紧密 有的用户之间的
  • 【会议资源】2022年第四届计算与人工智能国际研讨会(ISCAI 2022)

    2022年第四届计算与人工智能国际研讨会 ISCAI 2022 重要信息 会议网址 www iscai org 会议时间 2022年12月16 18日 召开地点 中国北京 截稿时间 2022年11月16日 录用通知 投稿后2周内 收录检索
  • Socket通信及文件操作

    java Socket通信及文件操作 编译软件 Eclipse 一 客户端 package com import java io BufferedReader import java io DataOutputStream import j
  • Mysql学习笔记-Mysql基础(基础看这篇就够了)

    数据库的基本概念 1 数据库的英文单词 DataBase 简称 DB 2 什么数据库 用于存储和管理数据的仓库 3 数据库的特点 1 持久化存储数据的 其实数据库就是一个文件系统 2 方便存储和管理数据 3 使用了统一的方式操作数据库 SQ
  • 【Linux】虚拟机免密登录

    以node1 node2为例 方法一 利用ssh keygen生成公钥和私钥 1 原理 在node1上生成公钥和私钥 之后将公钥复制到其他的虚拟机上 虚拟机通过匹配公钥则可以实现免密的操作 2 步骤 1 连接到node1 c ssh roo
  • Unknown CMake command "add_compile_definitions"

    Unknown CMake command add compile definitions 解决方法 换cmake 3 14
  • selenium自动化测试--126邮箱登录问题总结

    虫师著selenium 2自动化测试实战基于python语言第四章习题4 3 1 126邮箱登录练习问题总结 练习过程中 参考以下博友的博客顺利完成练习题 https blog csdn net cyjs1988 article detai
  • java.io.FileNotFoundException: xxx.txt (系统找不到指定的文件。) 的错误解决办法

    这是我报错的原来的代码 package day19 java2 import java io File import java io FileInputStream import java io IOException ClassName
  • saltstack+zabbix

    环境 server1 172 25 60 1 salt master salt minion zabbix server server2 172 25 60 2 salt minion zabbix agent 1 软件包安装过程存在许多依
  • 【小白笔记】——AD铺铜设置铜与焊盘、通孔的全连接

    目录 一 热焊盘与花焊盘的区别与比较 二 AD静态铺铜如何设置连接样式 一 热焊盘与花焊盘的区别与比较 来自百度百科 热焊盘 热焊盘指大面积的接地 电 中 常用元器件的腿与其连接 对连接腿的处理需要进行综合的考虑 就电气性能而言 元件腿的焊
  • 【数学建模】青少年犯罪问题

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 逐步回归分析法 1 1 逐步回归分析定义 最优回归方程 1 2 stepwise函数介绍 二 例题 青少年犯罪问题 2 1 题目简述 2 2 问题一建模与求解
  • 定制化UINavigationBar

    FirstViewController 定制化UINavigationBar void customNavigationBar 按钮被挡住 原因是 navigationbar的透明度默认为YES 先取出navigationbar UINav