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 ...
随机推荐
- 最新最最最简单的Axure傻瓜式破解版教程(带下载地址)
Axure 破解版下载 下载地址在文章末尾 Axure是什么? Axure RP是一款专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prot ...
- RxJS入门2之Rxjs的安装
RxJS V6.0+ 安装 RxJS 的 import 路径有以下 5 种: 1.创建 Observable 的方法.types.schedulers 和一些工具方法 import { Observa ...
- CLion 控制台输出内容乱码问题的解决方法
问题再现 #include "stdio.h" #include "stdlib.h" int main() { printf("嘤嘤嘤") ...
- 佛山6397.7539(薇)xiaojie:佛山哪里有xiaomei
佛山哪里有小姐服务大保健[微信:6397.7539倩儿小妹[佛山叫小姐服务√o服务微信:6397.7539倩儿小妹[佛山叫小姐服务][十微信:6397.7539倩儿小妹][佛山叫小姐包夜服务][十微信 ...
- MeteoInfoLab脚本示例:subplot
subplot命令可以自动等间距分配多个坐标系(Axes),命令中有三个参数,前两个定义了行数和列数,第三个指定了当前的坐标系(Axes),绘图命令是作用在当前坐标系中的. 脚本程序: def f(t ...
- Android开发教程之密码框右侧显示小眼睛
现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套[Android进阶学习视频].[全套Android面试秘籍].[Android知识点PDF] ...
- canal快速启动
QuickStart https://github.com/alibaba/canal/wiki/QuickStart 准备 对于自建 MySQL , 需要先开启 Binlog 写入功 ...
- sync-player:使用websocket实现异地同步播放视频
本文作者:星空无限 原文链接:https://liyangzone.com/2020/09/20/前端/sync-player/ GoEasy已获作者授权转载,GoEasy转载时有改动,感谢作者的分享 ...
- linux环境下protobuf安装
1. 到GitHub下载源码,执行解压命令后,进入解压后的目录 2. 执行./autogen,生成configure 3. 执行./configure --prefix=/usr/local/,pro ...
- if else 太多?看我用 Java 8 轻松干掉!
之前我用 Java 8 写了一段逻辑,就是类似下面这样的例子: /* * 来源公众号:Java技术栈 */ if(xxxOrder != null){ if(xxxOrder.getXxxShippi ...