您的位置:首页 > 产品设计 > UI/UE

UIWindow

2016-07-26 14:45 453 查看
#import "AppDelegate.h"

@interface
AppDelegate ()

@end

@implementation AppDelegate

// 加载info.plist,并且做判断,判断完没有main,就不会帮你创建窗口,自己手动创建

// 程序启动完成的时候调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   
// 窗口显示注意点:1.不要让窗口销毁,需要弄一个强引用
2.必须要设置窗口的尺寸

    // 1.创建窗口的对象

    self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];

    

    self.window.backgroundColor = [UIColorredColor];

    

    

   
// 2.创建窗口的跟控制器,并且赋值

   
// 苹果推荐使用控制器的原因,对应界面的事情交给对应的控制器去管理

    UIViewController *rootVc = [[UIViewControlleralloc]init];

    

    rootVc.view.backgroundColor = [UIColorgreenColor];

    

   
// 一旦设置窗口的根控制器,就会把根控制器的view添加到窗口

    //
做了旋转功能

    self.window.rootViewController = rootVc;

    

//    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];

//    btn.center = CGPointMake(50, 50);

//    [rootVc.view addSubview:btn];

//    [self.window addSubview:rootVc.view];

    

    // 3.显示窗口

    // 1.可以显示窗口 self.window.hidden = NO;

    // 2.成为应用程序的主窗口  application.keyWindow = self.window;

    [self.window makeKeyAndVisible];

    

    

//

//    NSLog(@"%@",self.window);

    

    return
YES;

}

// loadView作用:加载控制器的view

// loadView什么调用:当控制器的view第一次使用的时候就会调用

// 在开发中没有在loadView中调用[super loadView]

// 开发中什么情况使用:只要想自定义控制器的view就调用这个方法

// 底层做的事情.首先判断下有没有指定storyboard或者xib,如果指定,就会加载它们描述的控制器的view,如果没有指定,创建一个空的view.

// 控制器view的生命周期方法

// ARC:

// viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear

内存警告传递过程:手机内存不足产生事件->通知应用程序->调用应用程序代理方法->把事件传递给窗口->窗口传给控制器->调用控制器内存警告的方法。

> 当控制器接收内容警告,会销毁没有显示的控制器的view。(图片演示)

////////////////

// 存储

- (IBAction)save:(id)sender {

    // plist存储本质,就是帮你生成一个Plist文件

    //
谁才能做Plist,(数组,字典)

    // plist文件注意点:plist文件不能存储自定义对象

    

    Person *p = [[Personalloc]
init];

    

    NSArray *arr =
@[@"123",@1];

    

    // File:文件的全路径

   
// 1.先明确文件存储到哪,应用沙盒的某个文件夹中

    

   
// 获取应用沙盒路径

//    NSString *homePath = NSHomeDirectory();

//    NSLog(@"%@",homePath);

    

    //
获取Caches文件夹路径

    // directory:搜索文件夹

    // domainMask:在哪个范围内搜索 NSUserDomainMask:在用户中查找

    // expandTilde: YES :在路径展开 NO:不展开路径 ~:代替沙盒路径

    NSString *cachesPath =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,
YES)[0];

    

    //
拼接文件名

    NSString *filePath = [cachesPath
stringByAppendingPathComponent:@"arr.plist"];

    

    [arr writeToFile:filePath
atomically:YES];

    

}

// 读取

- (IBAction)read:(id)sender {

    NSString *cachesPath =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,
YES)[0];

    

    //
拼接文件名

    NSString *filePath = [cachesPath
stringByAppendingPathComponent:@"arr.plist"];

    

   
// 读取:以什么形式存储就以什么形式读取

    NSArray *arr = [NSArrayarrayWithContentsOfFile:filePath];

    

    NSLog(@"%@",arr);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: