IOS UI进阶03

导航控制器

1.导航控制器永远显示的是栈顶控制器的view

2.导航控制器中做界面之间的跳转必须拿到导航控制器

3.调用pop方法并不会马上销毁当前控制器

4.popToViewController使用注意点,传入进去的控制器必须是导航控制器栈里面的控制器

5.导航条的内容由栈顶控制器决定,一个导航控制器只有一个导航条,因此只能由一个控制器决定,谁先显示在最外面,谁就是栈顶控制器.

6.在iOS7之后,默认会把导航条上的按钮的图片渲染成蓝色.

7.导航条上的子控件位置不需要我们管理,只需要管理尺寸

8.UINavigationItem:是一个模型,决定导航条的内容(左边内容,中间,右边内容)

  1. UIBarButtonItem:是一个模型,决定导航条上按钮的内容

10.以后只要看到item,通常都是苹果提供的模型,只要改模型就能修改苹果的某些控件.

1-控制器view的生命周期

  1. 控制器的view的生命周期方法都是以view开头
  2. viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear

3.在非ARC中viewDidUnload,经常用来清空界面上的数据

2-数据存储

1.plist存储

1.plist存储,生成一个plist文件.

2.plist不是数组就是字典,plist存储就是用来存储字典或者数组.

注意:Plist不能存储自定义对象

3.获取应用沙盒中Caches文件路径


    // directory:获取哪个文件夹
    // domainMask:在哪个范围内搜索,NSUserDomainMask:表示在用户的手机上查找
    // expandTilde:是否展开全路径 YES:表示展开全路径 NO:不会展开全路径,会把应用沙盒的路径用波浪号(~)代替

    // 获取到Caches文件夹路径
    NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];

4.读取plist,之前是什么类型存储的,读取也是什么

2.偏好设置存储


    // 偏好设置存储:NSUserDefaults
    // 以字典的形式进行偏好设置,用法跟字典.
    // 偏好设置好处:  1.不需要关心文件名
    //              2.快速进行键值对存储
    //              3.直接存储基本数据类型

@implementation ViewController

- (IBAction)save:(id)sender {

// 获取单例

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// @"123" key:pwd

[defaults setObject:@"123" forKey:@"pwd"];

// bool

[defaults setBool:YES forKey:@"isOn"];

// int

[defaults setInteger:10 forKey:@"num"];

}

- (IBAction)read:(id)sender {

// 利用NSUserDefaults单例

NSString *pwd = [[NSUserDefaults standardUserDefaults] objectForKey:@"pwd"];

NSInteger i = [[NSUserDefaults standardUserDefaults] integerForKey:@"num"];

NSLog(@"%@--%ld",pwd,i);

}

3.归档

1.NSKeyedArchiver专门用来做自定义对象归档

// 什么时候调用:当一个对象要归档的时候就会调用这个方法归档
// 作用:告诉苹果当前对象中哪些属性需要归档
- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:_name forKey:@"name"];
    [aCoder encodeInt:_age forKey:@"age"];
}

// 什么时候调用:当一个对象要解档的时候就会调用这个方法解档
// 作用:告诉苹果当前对象中哪些属性需要解档
// initWithCoder什么时候调用:只要解析一个文件的时候就会调用
- (id)initWithCoder:(NSCoder *)aDecoder
{
    #warning  [super initWithCoder]
    if (self = [super init]) {
        // 解档
        // 注意一定要记得给成员属性赋值
      _name = [aDecoder decodeObjectForKey:@"name"];
      _age = [aDecoder decodeIntForKey:@"age"];
    }
    return self;
}
时间: 2024-10-11 05:38:14

IOS UI进阶03的相关文章

[iOS UI进阶 - 0] Quiartz2D

A.简介 1. 需要掌握的 drawRect:方法的使用 常见图形的绘制:线条.多边形.圆 绘图状态的设置:文字颜色.线宽等 图形上下文状态的保存与恢复 图形上下文栈 1.基本图形绘制* 线段(线宽.线段样式)* 矩形(空心.实心.颜色)* 三角形.梯形等形状* 椭圆\圆* 圆弧* 文字绘制* 图片绘制(pattern)* 图形上下文栈 2.练习(画人) 3.模仿UIImageView 4.自定义checkbox 5.图片裁剪 6.图片水印 7.条纹背景 8.截图     2.概念 Quartz

iOS UI进阶-1.0 Quartz2D

概述 Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统.Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 代码实现 绘制线条 #import "LineView.h" @implementation LineView -(void)drawRect:(CGRect)rect { // Drawing code // 1.获得图形上下文 CGContextRef

iOS UI进阶05

Quartz2D Quartz2D是二维的绘图引擎 经包装的函数库,方便开发者使用.也就是说苹果帮我们封装了一套绘图的函数库 用Quartz2D写的同一份代码,既可以运行在iphone上又可以运行在mac上,可以跨平台开发. 开发中比较常用的是截屏/裁剪/自定义UI控件. Quartz2D在iOS开发中的价值就是自定义UI控件. 在drawRect:方法中才能获取到上下文 Quartz2D绘图 自定义view:需要绘图,就必须重写drawRect:方法 1 drawRect视图要显示的时候,才会

iOS UI进阶-4.0 地图与定位

在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 Map Kit :用于地图展示 Core Location :用于地理定位 2个热门专业术语 LBS :Location Based Service SoLoMo :Social Local Mobile(索罗门)

[iOS UI进阶 - 2.3] 彩票Demo v1.3

A.需求 真机调试 "关于”模块 存储开关状态 打电话.发短信 应用评分 打开其他应用 cell 在iOS6 和 iOS7的适配 block的循环引用 屏幕适配 code source:  code source: https://github.com/hellovoidworld/HelloLottery B.iOS真机测试小功能 (1)打电话 a.方法1 最简单最直接的方式:直接跳到拨号界面 1 NSURL *url = [NSURL URLWithString:@"tel://1

[iOS UI进阶 - 3.0] 触摸事件的基本处理

A.需要掌握和练习的 1.介绍事件类型2.通过按钮的事件处理引出view的事件处理3.响应者对象 --> UIResponder --> UIView4.view的拖拽* 实现触摸方法,打印查看* 介绍touches和UIEvent参数* 扩展:点哪去哪5.涂鸦6.手势解锁7.事件的产生和传递8.响应者链条 9.手势 B.概念 1.iOS有3种主要事件 触摸事件 加速计事件 远程控制事件 2.响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事

iOS UI进阶-2.0 CALayer

在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层.在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain) CALayer *layer; 当UIView需要显示到屏幕上时,会调用drawRect

[iOS UI进阶 - 2.0] 彩票Demo v1.0

A.需求 1.模仿"网易彩票"做出有5个导航页面和相应功能的Demo 2.v1.0 版本搭建基本框架 B.搭建基本框架 1.拖入TaBarController,5个NavigationController和对应的5个UIViewController 2.配置图标和启动画面 AppIcon直接拖入图片 LaunchImage在Xcode6中需要先更改启动图使用图库的图片,而不是LaunchImage.xib 2.引入图片包 4. 按照模块分类代码包 3.底部导航--自定义TabBar (

[iOS UI进阶 - 3.1] 触摸事件的传递

A.事件的产生和传递 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow) 主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,这也是整个事件处理过程的第一步 找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理touchesBegan-touchesMoved- touchedEnded-