一、main.m
1、main函數(shù),程序唯一的入口
2、UIApplicationMain函數(shù)函數(shù)作用
1)創(chuàng)建一個(gè)應(yīng)用程序UIApplication對(duì)象,他是應(yīng)用程序的象征,一個(gè)UIApplication對(duì)象就代表一個(gè)應(yīng)用程序
2)指定誰管理應(yīng)用程序的生命周期
2)建立一個(gè)事件循環(huán)來捕捉處理用戶的行為
3、永遠(yuǎn)不用嘗試改變main.m中的內(nèi)容
二、程序的生命周期
1、UIApplication對(duì)象實(shí)例化后,程序啟動(dòng)時(shí)首先會(huì)調(diào)用該方法
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2、當(dāng)應(yīng)用程序?qū)⒁M(jìn)入非活動(dòng)狀態(tài)執(zhí)行,比如來電話了、鎖屏等。
- (void)applicationWillResignActive:(UIApplication *)application
3、當(dāng)應(yīng)用程序進(jìn)入活動(dòng)狀態(tài)執(zhí)行,這個(gè)剛好跟上面那個(gè)方法相反
- (void)applicationDidBecomeActive:(UIApplication *)application
4、一般程序進(jìn)入后臺(tái),就會(huì)進(jìn)入非活躍狀態(tài),但如果你的程序支持后臺(tái),程序在后臺(tái)也保持活躍狀態(tài)
- (void)applicationDidEnterBackground:(UIApplication *)application
5、程序進(jìn)入前臺(tái)
- (void)applicationWillEnterForeground:(UIApplication *)application
6、當(dāng)程序?qū)⒁顺鍪潜徽{(diào)用,通常是用來保存數(shù)據(jù)和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication *)application
7、找到info.plist文件,添加Application does not run in background,并設(shè)置YES,使應(yīng)用不支持后臺(tái)操作,一旦退到后臺(tái)程序就退出
8、練習(xí)
驗(yàn)證應(yīng)用程序的聲明周期
三、UIWindow
1、在iOS中,使用窗口與試圖在屏幕上顯示應(yīng)用程序的內(nèi)容,窗口本身不具有任何可見的內(nèi)容,但他對(duì)于應(yīng)用程序的試圖提供一個(gè)基本的容器,試圖定義你想要的一些內(nèi)容,例如:圖像、文本、表格等等
2、程序中每個(gè)時(shí)刻只能有一個(gè)UIWindow是keyWindow,通常應(yīng)用程序只有一個(gè)window
3、iOS程序啟動(dòng)完畢后,會(huì)首先創(chuàng)建一個(gè)UIWindow
4、一個(gè)iOS程序之所以能顯示到屏幕上,完全是因?yàn)樗蠻IWindow,也就是說沒有UIWindow,就看不見任何UI界面
5、常用方法
1)讓當(dāng)前UIWindow變成keyWindow(主窗口)
- (void)makeKeyWindow;
2)讓主窗口顯示出來
- (void)makeKeyAndVisible;
6、練習(xí)
自己創(chuàng)建一個(gè)window作為主窗口
四、程序的完整啟動(dòng)過程
1、main函數(shù)
2、UIApplicationMain
1)創(chuàng)建UIApplication對(duì)象
2)創(chuàng)建UIApplication的delegate對(duì)象
3、delegate對(duì)象開始處理(監(jiān)聽)系統(tǒng)事件
1)程序啟動(dòng)完畢的時(shí)候, 就會(huì)調(diào)用代理的application:didFinishLaunchingWithOptions:方法
2)在application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow
3)創(chuàng)建和設(shè)置UIWindow的rootViewController
4)顯示窗口
五、手機(jī)屏幕的幾個(gè)概念
1、UIScreen
可以充當(dāng)iOS物理屏幕的替代者,
[UIScreen mainScreen] bounds] 能夠獲取屏幕大小
2、屏幕尺寸
指具體的屏幕物理長(zhǎng)度,以屏幕的對(duì)角線的長(zhǎng)度作為試試
3、像素
圖像由一個(gè)個(gè)點(diǎn)組成,這個(gè)點(diǎn)叫做像素
4、屏幕分辨率
指屏幕屏幕上總共的物理像素點(diǎn)
5、屏幕尺寸
設(shè)備? ? ? 屏幕尺寸? 分辨率(pt) reader 分辨率(px)
3GS? ? ? 3.5? ? ? 320*480? @1x? ? 320*480
4/4S? ? ? 3.5? ? ? 320*480? @2x? ? 640*960
5/5S/5C? 4.0? ? ? 320*568? @2x? ? 750*1334
6? ? ? ? 4.7? ? ? 375*667? @2x? ? 750*1334
6P? ? ? ? 5.5? ? ? 414*736? @3x? ? 1242*2208
pt: 用于計(jì)算屏幕上的坐標(biāo)
六、iOS坐標(biāo)系統(tǒng)
1、iPhone的試圖坐標(biāo)系是以左上角為原點(diǎn)
2、每一個(gè)view的frame所使用的坐標(biāo)系以它的父試圖的左上角為原點(diǎn)
3、試圖結(jié)構(gòu)和相關(guān)函數(shù)
//試圖顯示的位置
CGPoint point = CGPointMake(x,y)
//試圖顯示的大小
CGSize size = CGSizeMake(width,height)
//試圖顯示的位置和大小
CGRect rect = CGRectMake(x,y,width,height);
4、frame/Bounds/center
frame: 包含試圖的位置和大小
Bounds:包含試圖的大小,位置默認(rèn)是(0,0)
center:包含試圖中心點(diǎn)所在的位置