ui--UINavigationController
来源:互联网 发布:vb.net安装包 编辑:程序博客网 时间:2024/05/19 16:05
#define KWS(weakSelf) _weak _typeof(&*self)weakSelf=self //block 把强强引用转化成弱引用, 在代码中用block 反向传值可能会出现报警
=============================
UINavigationController/导航控制器
=============================
QQ:2530432526
二.导航控制器细讲
【注】导航控制器发生作用,有三个类共同作用
UINavigationController
//本身并不显示无需定制
UINavigationBar
//属于导航控制器(子对象),需要定制
UINavigationItem
//显示到导航条上,属于每个导航中的视图控制器,每个视图控制器有自己的BarItem,需要每个页面单独定制
1.UINavigationBar (导航条,普通视图控件,父类为UIView)
每个导航控制器有且只有一个导航条(所有的视图控制器共用一个导航条)
导航控制器中的导航条高度固定44
(1)拿到导航条的方法:
self.navigationController.navigationBar
(2)设置导航条的风格:
self.navigationController.navigationBar.barStyle
UIBarStyleDefault 默认
下面三中iOS7之后几乎一致
UIBarStyleBlack
UIBarStyleBlackOpaque
UIBarStyleBlackTranslucent
设置导航条的风格样式会波及到状态栏
(3)设置导航条的背景图片
- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics
//UIBarMetricsDefault 对应iPhone竖屏(人像模式)
//UIBarMetricsLandscapePhone 对应iPhone横屏(风景模式)
(4)是否隐藏导航条
@property(nonatomic,getter=isNavigationBarHidden)BOOL navigationBarHidden;
- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated加动画的
注意:图片严格遵守屏幕宽*44的尺寸,贴图不会波及到状态栏,而且状态栏会自动呈现出最初的样式
2.定制NavigationItem 加载在UINavigationBar上的
//每个页面单独定制自己的Item
(1)设置导航条上显示的标题视图,会将视图自动居中显示,在外部设置x,y无效果
self.navigationItem.titleView
self.navigationItem.title
(2)UIBarButtonItem
1、通过初始化标题的方法
UIBarButtonItem *item = [[UIBarButtonItemalloc] initWithTitle:@"左侧"style:UIBarButtonItemStylePlaintarget:selfaction:@selector(leftItemClicked:)];
UIBarButtonItemStylePlain (iOS7中将Item的圆角矩形和边框全部去掉了)
2、用系统提供的样式初始化得到UIBarButtonItem的对象
UIBarButtonItem *item1 = [[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCameratarget:selfaction:@selector(rightItemClicked:)];
3、开发中最常用的创建UIBarButtonItem的方法(这个一定要会)
UIBarButtonItem *item2 = [[UIBarButtonItemalloc] initWithCustomView:customBtn];
(3)显示在导航条的左侧和右侧
self.navigationItem.leftBarButtonItem 设置左侧1个视图
self.navigationItem.leftBarButtonItems 设置左侧1组视图,数组的元素必须是UIBarButtonItem的对象
self.navigationItem.rightBarButtonItem 设置右侧1个视图
self.navigationItem.rightBarButtonItems 设置右侧1组视图,数组的元素必须是UIBarButtonItem的对象
注意:当我们用leftBarButtonItem覆盖掉系统原本的返回上级界面的按钮,这个时候,UINavigationController的测滑是不能用的。
3.定制ToolBar(工具条)
//每个导航控制器,还配备了工具条(44坐标高),默认隐藏
【注】toolBar属于NavigationController,一个导航控制器,只有一个
【注】toolBarItems属于每个视图控制器,每个视图控制器单独定制
(1)拿到导航控制器中工具栏的方法
self.navigationController.toolbarHidden=NO
self.navigationController.toolbar
(2)设置工具栏的背景图片
- (void)setBackgroundImage:(UIImage *)backgroundImage forToolbarPosition:(UIBarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics
(3)self.toolbarItems 设置底部,数组中每个元素必需是UIBarButtonItem
注意:开发中,底部工具栏往往自己通过UIView+UIButton定制
再注意:视图控制器的title属性能同时为navigationItem.title和tabBarItem.title赋值
三.视图控制器间传值(面试题)
【及时性】
ΔΔ代理传值
Block传值
Δ通知传值(以后说)
【非及时性】
全局变量传值 (只能是基础数据类型)
单例传值(传递对象数据)
//例子:1、我们会把用户信息放到单例里面,当我们需要用户的信息的时候,直接从单例里面取。
文件传值(最慢),存数据库。
四.NSUserDefaults的使用(沙盒保存基本数据的方法)
1、介绍:单例,每个应用程序有且只有一个NSUserDefaults对象,本质是应用程序特定路径下的一个plist文件
2、用途:用于实现数据持久化存储,存储数据量相对较小的数据(比如:用户名,密码。或者程序的一些设置信息等)
3、只能存储基本数据类型:(NSString,NSArray,NSDictionary,NSData,NSDate,bool,NSURL,NSNumber),NSArray,NSDictionary 中的元素也必须是基本数据类型(比如 :NSArray中是字符串,能够写入到UserDefaults,NSArray中是视图控制器对象,则此array不能写入)
4、用法
1)NSUserDefaults *defaluts = [NSUserDefaultsstandardUserDefaults];
//拿到单例
2)- (void)setObject:(id)value forKey:(NSString *)defaultName;
//向NSUserDefaults,写入数据(内存)
3)- (void)removeObjectForKey:(NSString *)defaultName;
//删除NSUserDefaults中的对应数据
4)- (id)objectForKey:(NSString *)defaultName;
//从UserDefaults中读取数据,如果从来没写入过数据,读到的为空
5)[defaluts synchronize];
//将数据同步给应用程序(执行真正写入plist的操作)
注意:第二个方法和第三个方法执行完之后,一定要执行第5个方法
- UI - UINavigationController
- ui--UINavigationController
- UI UINavigationController导航控制器
- UI之UINavigationController
- UI-UINavigationController导航栏
- UI 第八天 UINavigationController
- UI基础之—UINavigationController
- UI基础-UINavigationController、界面通信
- iOS学习UI之UINavigationController
- 21、UINavigationController(反向传值)-UI+OC
- UI:导航控制器UINavigationController的使用
- UI开发----UINavigationController和页面间传值
- UI常用方法总结之 UINavigationController
- iOS Storyboard UI框架搭建,UITabBarController UINavigationController
- UINavigationController - iOS - UI基础知识总结12
- UI第八天:UINavigationController、界⾯通信
- 随意细解:UI -- UINavigationController、界面通信
- UI基础学习之(十二):UINavigationController
- C++::几道关于对象模型的经典题
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- java之三种代码块
- ---如何编写订单---
- 机器学习算法与Python实践之支持向量机
- ui--UINavigationController
- 【USACO】【贪心】Section1.3 Mixing Milk 题解
- 最简单的小型商城实现:Serlvet+Jsp经典案例
- tensorflow conv2d的padding解释以及参数解释
- android源码分析之网络更新时间
- linux ubuntu su 认证失败
- iOS开发笔记之五十五——关于LocationManager那点事
- Reverse Nodes in k-Group
- 第十五周项目2 用哈希法组织关键字