AppDelegate的生命周期

AppDelegate.swift中应该了解的内容

@UIApplicationMain  //调用了OC中的UIApplicationMain函数;是iOS应用程序的入口; 功能: 1.创建了一个UIApplication对象,代表当前应用程(作用是用来检测当前应用程序状态的改变)。2.创建一个遵守UIApplicationDelegate的协议的类的对象作为UIApplication的代理(作用处理应用程序状态的改变,实质创建AppDelegate对象并且设置为UIApplication对象的代理)


class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

//1. 当应用程序启动成功后,会自动调用这个方法
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
//        1.在这个方法中来创建应用程序中的所有的界面
//        2.获取应用程序需要展示的数据
//        3.使用界面展示数据
//        注意:如果不在这个文件中创建window,那么程序会通过Main.storyboard去创建应用程序的界面
        print("启动成功")
        return true
    }

//     2. 当应用程序将要非活跃状态的时候会自动调用这个方法。
//     活跃状态:程序在屏幕上可见
//     非活跃状态:程序没有显示在屏幕上(a.按home键进入后台。b.来电打断。c.在当前应用程序中打开其它的应用程序)
    func applicationWillResignActive(application: UIApplication) {
        
//        在这个方法中一般去暂停视频/音频播放;游戏需要暂停游戏;保存数据
        print("将要成为非活跃状态")
//        按home键:command + shift + h
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }

//   3. 应用程序已经进入后台的时候会自动调用
//    进入后台按home键
    func applicationDidEnterBackground(application: UIApplication) {
        print("进入后台")
     
    }

//    4.应用程序将要进入前台的时候会自动调用的方法
//    进入前台:
    func applicationWillEnterForeground(application: UIApplication) {
        
        print("将要进入前台")
      
    }

//    5.应用程序已经变成活跃状态的时候会自动调用
//    a.程序启动成功之后 b.程序从后台重新进入前台 c.来电打断结束...
    func applicationDidBecomeActive(application: UIApplication) {
        print("已经变成活跃状态")
       
    }

//    6.应用程序将要终止的时候会调用的方法
//    
    func applicationWillTerminate(application: UIApplication) {
        print("应用程序将要终止")
     }
    

如何用代码的形式加载windows窗口

class AppDelegate: UIResponder, UIApplicationDelegate {
//  UIWindow:UIView
//  window:窗口,一个应用程序想要展示在屏幕上,至少要有一个window,一个手机应用程序一般只有一个window
//    应用程序中的所有界面全部是展示在window上的
    var window: UIWindow?

//  1.程序已经启动
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
//        1.创建UIWindow对象
//        frame  是UIView中的属性,确定视图显示在屏幕上的位置和大小
//         UIScreen.mainScreen() 拿到手机屏幕
            self.window = UIWindow.init(frame: UIScreen.mainScreen().bounds)
//        2.设置根视图控制器
        self.window?.rootViewController = UIViewController()
        
        self.window?.backgroundColor = UIColor.yellowColor()
        // Override point for customizatio n after application launch.
        return true
    }

 

}

UIView基本属性和方法

        
//        UIView:是iOS 中所有控件(视图)直接/间接的父类;所以UIView的属性和方法,对其他类型的视图都有效
//        视图:在屏幕上能看到的所有的东西都属于视图

//        1.创建UIView的对象
        0let redView = UIView()
        
//        2. 想要将视图展示在屏幕上的两个条件;
//        a.必须设置坐标和大小(默认坐标是(0,0)大小(0,0))
//        b.将视图添加到已经展示在屏幕上的视图
//        设置frame的(x,y)和(width,height)两个部分组成
//        redView.frame = CGRect(x: 10, y: 10, width: 100, height: 100)
//        iOS 中所有的结构体都有一个对应的Make方法用来快速的创建一个结构体变量
        redView.frame = CGRectMake(10, 10, 100, 100)
//        3.将视图添加到界面上
        self.view.addSubview(redView)
        
//        4.设置背景颜色
//        视图的背景颜色默认是透明色
//        颜色创建的方式:
//        a.通过类型方法创建指定颜色
        
        redView.backgroundColor = UIColor.redColor()
//        b.通过三原色来创建颜色
//        CGFloat就是UI中的浮点型
//        参数1,2,3:红,绿,蓝的值(0~1)  4:透明度(0~1)
//        redView.backgroundColor = UIColor.init(red: 0.35, green: 0.45, blue: 0.75, alpha: 0.88)
//        redView.backgroundColor = UIColor.init(white: 0.4, alpha: 1)
        
//        练习:创建一个黄色的矩形,显示在红色视图的中间位置,大小是(50,50)
//        方式1:
//        let yellowView = UIView(frame: CGRectMake(35,35,50,50))
//        yellowView.backgroundColor = UIColor.yellowColor()
//        self.view.addSubview(yellowView)
        
//        方式2:
        let yellowView = UIView(frame: CGRectMake(25,25,50,50))
        yellowView.backgroundColor = UIColor.yellowColor()
//        添加到红色视图上
        redView.addSubview(yellowView)

//        总结:计算视图的坐标的时候,注意相对性。当前视图被添加到哪个视图上,那么当前视图的坐标就是相对于谁来算的
        
    }

与frame相关的属性

//        创建一个视图
        let redView = UIView()
//        添加到界面上
        self.view.addSubview(redView)
//        设置背景颜色
        redView.backgroundColor = UIColor.redColor()
//        1.frame(坐标和大小)
        redView.frame = CGRectMake(100, 100, 100, 100)
//        2.center(中心点)
//        a.通过frame和确定视图的中心点坐标
        print(redView.center)
//        b.可以通过改变center的值,去改变视图的坐标
        redView.center = CGPoint(x: 200, y: 200)
        print(redView.center)

        //        3.bounds(坐标和大小)
//        默认情况下bounds的坐标 是(0,0)大小和视图的frame大小一样
       print(redView.bounds)

//        了解:
//        如果改变bounds的大小,frame的大小和坐标都改变,center不变
//         如果改变bounds的坐标,不影响当前视图的位置。但是影响添加到当前视图上的子视图的坐标,不建议修改bounds
        //        redView.bounds = CGRect(x: 0, y: 0, width: 200, height: 200)
        
        
        
//        4.transform(形变)
//        当前视图发生形变,那么添加到当前视图上的所有视图都会跟着一起形变
        
//        a.缩放
//        参数1:x方向上的缩放比例
//        参数2:y方向上的缩放比例
//        redView.transform = CGAffineTransformMakeScale(0.8, 2.5)
        
        
//        b.旋转
//        参数:旋转角度(圆周率对应的角度)
//        redView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))
        
//        c.平移
//        参数1:在x方向上平移的距离
//        参数2:在y方向上平移的距离
//        redView.transform = CGAffineTransformMakeTranslation(100, 100)
        
        
//        d.多个形变同时发生 
//        在另外一个形变的前提下旋转
//        参数1:另外一个形变
        redView.transform = CGAffineTransformRotate(CGAffineTransformMakeScale(0.5, 0.5), CGFloat(M_PI_4))
        
//        在另外一个形变的前提下平移
        redView.transform = CGAffineTransformTranslate(redView.transform, 0, 300)
        
//        在另外一个形变的前提下缩放
//        创建一个平移的形变
        let transLation = CGAffineTransformMakeTranslation(100, 0)
        redView.transform = CGAffineTransformScale(transLation, 0.5, 2 )
        
//        组合两个变形
//        将旋转形变和平移形变组合
        let  rotate = CGAffineTransformMakeRotation(0.2)
        let transLation1 = CGAffineTransformMakeTranslation(100, 100)
        redView.transform = CGAffineTransformConcat(transLation1, rotate)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容