iOS 导航栏 工具条
导航栏最常见的例子就是返回按钮的所在
在AppDelegate.m中,代码布局最开始定义窗口的时候, _window.rootViewController就应该为一个UINavigationController
这里的UINavigationController,戳进定义发现它是UIViewcontroller的子类
而之前代码布局中这里用的rootController是UIViewcontroller
所以它之中也是像之前代码布局中的UIViewcontroller一样是包含多个controller的,所以作为rootController
//按我自己理解,UINavigationController就是一个带导航栏的特殊UIViewcontroller,我们用导航栏,就选择用它
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UINavigationController *rootNav = [[UINavigationController alloc]
initWithRootViewController:[[ViewController alloc]init]]; _window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
_window.rootViewController = rootNav;
[_window makeKeyAndVisible];
return YES;
}
导航栏暂时完成,下面去定义工具条
事实上NavigationController自带ToolBar,所以有更加方便的使用方法,使用自定义ToolBar可以是你有特殊需求,或者想自定样式(或者不知道自带ToolBar……)
先讲自定义的
我们可以新建一个View,父类选择UIToolBar,这就是我们自己的工具条View
ToolBar作为一个独立的View,和之前的代码布局中我们自己的Mainview没什么区别,想添加控件的方法都是一样的
只不过这个ToolBar只是一个工具栏,所以定位只在工具栏的一块小区域中定位,这是差不多唯一的不同
现在,我们要加载的有我们本身想要的一个View,通过改变rootController类型添加了导航栏,现在我们又要添加导航条,要加载的就不止一个View
在上次单纯的代码布局中,在Viewcontroller.m中重写的loadView是这样的
-(void)loadView
{
self.view = [[MainView alloc]initWithFrame:[UIScreen mainScreen].bounds];
}
直接把定义的根view赋值了我们自己的Mainview这一个,现在我们需要多个,就可以
-(void)loadView
{
[self.navigationItem setTitle:@"备忘录"];
[super loadView];
[self.view addSubview:[[NoteListView alloc]
initWithFrame:[UIScreen mainScreen].bounds
style:UITableViewStylePlain]];
[self.view addSubview:[[NoteListToolbar alloc]
initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height - 44, [UIScreen mainScreen].bounds.size.width, 44)]];
}
先调用父类的loadView , [super loadView],来保证我们有一个基本的View存在,虽然他是空的,表示为黑屏
接着可以向这个View中使用addSubview添加你想要的View
另外这里的self是最开始的rootController的类型UINavigationController,使用它的属性来定义了标题
然后是使用自带的ToolBar
在Viewcontroller中,可以使用self.navigationController.toolbar找到这个自带的ToolBar
//顺便一提,关于self,在Appdelegate中,使用的是
// UINavigationController *rootNav = [[UINavigationController alloc]
initWithRootViewController:[[ViewController alloc]init]]; 来定义的window的rootcontroller
既然现在有了一个自带的ToolBar,我们只要把之前在我们自己的ToolBar文件中所添加的控件添加至这个自带的ToolBar即可
但是我们之前没发现它自带就是因为它默认是隐藏的……
在loadView中使用
[self.navigationController setToolbarHidden:NO];
来显示ToolBar
在loadView中,只要1、显示它 2、初始化它即可
可以在loadView函数下新增一个函数来专门放ToolBar的初始化
//toolbar
@property(strong , nonatomic)UILabel *LBNotecount;
@property(strong , nonatomic)UIButton *BTCreate; @end @implementation ViewController -(void)loadView
{
[self.navigationItem setTitle:@"导航栏"];
[super loadView];
_list =[[NoteListView alloc]initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
[self.view addSubview:_list]; // _toolbar = [[NoteListToolbar alloc]
// initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height - 44, [UIScreen mainScreen].bounds.size.width, 44)];
// [self.view addSubview: _toolbar];
// [_toolbar.BTCreate addTarget:self action:@selector(createPressed:)forControlEvents:UIControlEventTouchUpInside]; [self.navigationController setToolbarHidden:NO];
[self loadtoolbar:self.navigationController.toolbar];
//self.navigationController.toolbar; } -(void)loadtoolbar:(UIToolbar *)toolbar
{
_LBNotecount = [[UILabel alloc]
initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width/2 - 60, toolbar.bounds.size.height/2 - 10, 120, 20)];
[_LBNotecount setText:@"工具栏"];
[_LBNotecount setTextAlignment:NSTextAlignmentCenter];
[toolbar addSubview:_LBNotecount]; _BTCreate = [[UIButton alloc]
initWithFrame:CGRectMake(0, 0, 20, 20)];
[_BTCreate setBackgroundColor:[UIColor greenColor]];
[toolbar addSubview:_BTCreate];
[_BTCreate addTarget:self action:@selector(createPressed:)forControlEvents:UIControlEventTouchUpInside]; }
SSH git@github.com:kakinuma4ko/iOSDmo.git
iOS 导航栏 工具条的更多相关文章
- NavUtils【底部虚拟导航栏工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 获取底部虚拟导航栏的高度值 效果图 代码分析 checkDeviceHasNavigationBar(Context context ...
- iOS:导航栏的工具条和导航条
功能:用NAV视图控制器打开新的视图,默认工具条和导航条隐藏,双击显示之 // // main.m // Hello // // Created by lishujun on 14-8-28. // ...
- ios隐藏导航栏底线条和导航、状态栏浙变色
方法一遍历法: 在你需要隐藏的地方调用如下代码 [self findlineviw:self.navigationBar].hidden = YES; -(UIImageView*)findlinev ...
- iOS导航栏背景,标题和返回按钮文字颜色
在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...
- iOS 导航栏实现总结
目标: 在UI界面中实现 整体效果的导航栏, 比如1 首页无导航条,次页有导航条, 2 导航条中不包含下方不包含黑边 3 导航条包含多个筛选项 等等 问题: 用系统带的NavigateBar 来实现时 ...
- IOS 导航栏属性设置
IOS 7 以上系统导航栏: [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; // 返回按钮颜色 [UINaviga ...
- 【Swift】iOS导航栏错乱的原因
#iOS开发高级技巧#导航栏错乱,也就是导航栏的显示效果与内容区不匹配,引发原因很多,其中最重要的有两个原因: 1.在viewwillappear,viewwilldisappear两个函数中,设置导 ...
- 转:ios导航栏设置
原帖:http://www.cocoachina.com/industry/20131104/7287.html 本文提供的代码需要用Xcode 5来执行.如果你还在使用老版本的Xcode,那么在运行 ...
- iOS 导航栏黑线,UIImage 枚举处理方式
ios 找出导航栏下面的黑线(可隐藏,改变样式等) http://www.jianshu.com/p/effa4a48f1e3 设置UIImage的渲染模式:UIImage.renderi ...
随机推荐
- RESTfull是什么
经常做接口测试,会看很多接口文档,那怎么识别研发的接口设计是否足够规范,是否符合一些行业标准或准则.那认识了解RESTfull,可以让我们更具有专业性.让我们对接口文档的阅.接口合理性设计识别,做到有 ...
- MeteoInfoLab脚本示例:中尺度气旋散点图
全球长时间序列中尺度气旋数据(http://cioss.coas.oregonstate.edu/eddies/)有netCDF格式,散点数据类型,只有一个很大的维Nobs = 2590938.尝试读 ...
- Verilog基础入门——Vivado工程创建(三)
Verilog基础入门--Vivado工程创建(三) Vivado是Verilog语言的一个集成环境,目前使用的版本为英文版,简单介绍一下在Vivado中创建一个工程并写入源文件 [配置] win10 ...
- 灵魂拷问:你真的理解System.out.println()执行原理吗?
原创/朱季谦 灵魂拷问,这位独秀同学,你会这道题吗? 请说说,"System.out.println()"原理...... 这应该是刚开始学习Java时用到最多一段代码,迄今为止 ...
- SonarQube 7.7 安装教程
SonarQube 7.7 安装教程 一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali ...
- 聊聊简单又灵活的权限设计(RBAC)
你:我看完能知道个啥?我:也就以下两点吧一. 了解基于 RBAC 思路的表设计二. 表数据在实际开发场景中是如何使用的你:我觉得那应该还有点干货吧我:我不要你觉得,我要我觉得 (͡ ͡° ͜ つ ͡͡ ...
- Helium文档6-WebUI自动化-S用于通过id\name\classname\xpth定位元素
前言 S方法可以灵活定位元素特别注意,比如to_left_of参数的使用是查找在某个元素左侧的元素,但是默认只会找第一个S方法可以灵活运用,特别是没有id,没有name,只有classname的情况, ...
- tomcat在eclipse里部署
先下载安装包,解压缩,运行安装文件(端口:8080,下一步 指定jdk安装路径,记住tomcat的安装位置) 安装程序的位置 和 安装后的位置不一样 ...
- BootStrapValidator表单验证插件的学习和使用
BootStrapValidator表单验证插件的学习和使用 引入标签 <script type="text/javascript" src="https://cd ...
- java中true不是关键字?
java中true ,false , null在java中不是关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符. 其中const和goto是java的保留字.java中所 ...