24.UINavigation 和 UIViewController 的各种关系分析
来源:互联网 发布:软件项目开工报告 编辑:程序博客网 时间:2024/05/16 05:10
目录
1.关系分析
2.关系综述
3.概念点
1.关系分析
UIBarItem-> UIBarButtonItem -> UINavigationItem
1.1 UIBarItem:
UIBarItem类是一个可以放置在Bar之上的所有小控件类的抽象类。继承了该基类所有子类在外观上类似于一个Button,它们都有一个标题,图片,动作以及目标,这点可以从其子类的初始化方法处看到。
1.2 UIBarButtonItem:
专门用来放在UIToolbar 或者 UINavigationBar的特殊button.基本行为跟button是一样的。另外从IOS5开始的Customizing Appearance 增加了一系列的方法调整显示。
1.3 UINavigationItem: NSObject
(包含了当前页面导航栏上需要显示的全部信息)
title,prompt,titleView,leftBarButtonItem,rightBarButtonItem,backBarButonItem
1.4 UINavigationBar :UIView
NavigaitonBar就是导航栏,位于屏幕的上方,管理整个NavigationController的navigationItem,即类似navigationcontroller一样提供了一个栈来管理item。
1.5 UINavigtionController :UIViewController
包含:viewcontrollers、navigationbar、toolbar
1.6 NavigationBar:UIView
包含:items(UINavigationItem)
1.7 viewController
包含navigationitem,toolItem. 这两个属性控制了当前页面当前页面的navigationbar,toolbar的外观。
2.关系综述
navigationcontroller直接控制viewcontrollers,然后包含的navigationbar形成整个nv的导航栏,bar并包含整个navigationItem的栈,管理整个nv的navigationitem( NSArray *items 属性)。
navigationItem包含了bar视图的全部元素(如title,tileview,backBarButtonItem等),受当前viewcontroller管理,即bar形成整个nv的导航视图,然后每个nv页面的导航栏元素由所在页面的navigationItem管理。即设置当前页面的左右barbutton,用 self.navigationItem.leftBarButtonItem等。
3.概念点
3.1
UINavigationController 是一个viewController
UINavigationBar 是一个view
UINavigationItem 是一个NSObject
UIBarButtonItem 是一个 UIBarItem,是一种专门放在bar上的特殊button
UIBarItem是一个NSObject,是是各种itme的父类
3.2 title
self.navigationItem.title,self.tabBarItem.title,self.title关系:
由于view controller本身包含navigationItem和tabBarItem,所以可以单独对其title赋值,self.title会重写另外两个的值,只是提供的一种便利方法。
3.3 self.navigationItem,self.navigationController.navigationItem
self.navigationItem 是定制当前view的 导航栏。根据当前的资料看,self.navigationController.navigationItem 是应该被忽视的属性,navigationcontroller继承与view controller,所以会有这个属性,但没有任何作用。
不过有人说,“They are Different. If you dynamically add UINavigationController, then you use self.navigationController.navigationItem.”但是没有得到验证,这点我也不认可。
3.4 navigationbar 高度 可更改
UINavigationBar *bar = [self.navigationController navigationBar];
CGFloat navBarHeight = 70.0f;
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, navBarHeight);
[bar setFrame:frame];
3.5 navigationbar prompt
prompt 是一个NSString类型描述,注意添加该描述以后NavigationBar的高度会增加30,总的高度会变成74(不管当前方向是Portrait还是Landscape,此模式下navgationbar都使用高度44加上prompt30的方式进行显示)。
如:
self.navigationItem.prompt=@”这是什么?”;
self.title=@”HAH”;
3.6 navigation bar,interactivePopGestureRecognizer
对navigation bar 可以修改barstyle 和transulucent,不能直接修改 frame,bounds,alpha等属性。可以通过initWithNavigationBarClass方法指定自己的navigationbar
IOS7 多了interactivePopGestureRecognizer,看资料说 ios7 UINavigationController 自动就加入了手势返回 前提是不能自定义leftBarButtonItem,自定义了leftBarButtonItem手势就失效了,待研究。
- 24.UINavigation 和 UIViewController 的各种关系分析
- UIViewController和UIView的关系
- 设置UINavigation的背景图片和背景颜色
- ios--UITabBarController和UINavigation的集成
- ios中UINavigation和UITabBar的结合
- UINavigation和UIScorllView自适应的高度问题
- 设置UINavigation的背景图片和背景颜色
- ios中UINavigation和UITabBar的结合
- UINavigationController 、UIViewController和UIWindow间的层次关系
- UIViewController与UIView的关系
- UIViewController与UIView的关系
- UIViewController与UIView的关系
- UIViewController与UIView的关系
- UIWindow、UIView、UIViewController的关系
- UIViewController各种方法生命周期和调用顺序
- UIViewController和UIViewController之间的交互
- UIViewController和UIViewController之间的交互
- UI总结之UIViewController 和 UIView关系
- Java Reflection(十二):动态类加载与重载
- Unity3D学习笔记(十七)自定义鼠标形状
- 学习Discuz! X3.2记录:superslide幻灯特效2
- svn环境搭建难题解答
- 内存管理语义
- 24.UINavigation 和 UIViewController 的各种关系分析
- Xcode安装插件错误点击skip跳过
- 前端开发工具
- Unity3D学习笔记(十八)使用插件NGUI制作小地图
- iOS-多线程编程学习之NSThread(三)
- maven 常用命令 mvn 发布可执行jar包
- Unity3D学习笔记(十九)敌人AI
- Windows命令:Net使用详解
- swift部分控件学习 源码集合