大前提:建立一個Xcode -> 點擊第二個 -> iOS -> Applaction -> Single View Application下的一個應用程序
一岖是、main.m 里面的
1帮毁、main函數(shù),程序唯一的入口
2豺撑、UIApplicationMain函數(shù)函數(shù)作用
1)創(chuàng)建一個應用程序UIApplication對象烈疚,他是應用程序的象征,一個UIApplication對象就代表一個應用程序
2)指定誰管理應用程序的生命周期
3)建立一個事件循環(huán)來捕捉處理用戶的行為
3聪轿、永遠不用嘗試改變main.m中的內容
二爷肝、程序的生命周期
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
#pragma mark 系統(tǒng)自動生成一個窗體
//1.當Applaction對象被實例化后,程序啟動調用這個方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSLog(@"輸出系統(tǒng)自己創(chuàng)建的window=%@",self.window);
#pragma mark 手動創(chuàng)建一個UIwindow對象
//1).創(chuàng)建一個window對象
//UIWindow *customWindow = [[UIWindow alloc]init];
//2).獲取到UIScreen對象
UIScreen *screen = [UIScreen mainScreen];
//4).給window設置一個位置和尺寸
CGRect rect = [screen bounds]; //自動獲得當前所選擇的模擬器的窗體大小
UIWindow *customWindow = [[UIWindow alloc]initWithFrame:rect];
//5).給窗體設置背景顏色
customWindow.backgroundColor = [UIColor blueColor];
//6).給window設置一個根控制器陆错,window和控制共同協(xié)作起來顯示界面
customWindow.rootViewController = [[UIViewController alloc]init];
//7).將customwindow賦值給self.window
self.window = customWindow;
//8).把定義的window作為主window,并顯示出阿萊
[customWindow makeKeyAndVisible];
#pragma mark 在桌面上放一些試圖
//用試圖做一個王字玩玩
//第1個豎
UIView *view = [[UIView alloc]init];
view.frame = CGRectMake(140, 50, 40, 380);
view.backgroundColor = [UIColor yellowColor];
[self.window addSubview:view];
//第1個橫
UIView *view1 = [[UIView alloc]init];
view1.frame = CGRectMake(50, 50, 220, 40);
view1.backgroundColor = [UIColor greenColor];
[self.window addSubview:view1];
//第2個橫
UIView *view2 = [[UIView alloc]init];
view2.frame = CGRectMake(50, 220, 220, 40);
view2.backgroundColor = [UIColor redColor];
[self.window addSubview:view2];
//第3個橫
UIView *view3 = [[UIView alloc]init];
view3.frame = CGRectMake(40, 390, 240, 40);
view3.backgroundColor = [UIColor purpleColor];
[self.window addSubview:view3];
NSLog(@"程序啟動");
return YES;
}
//3.當應用程序將要進入非活躍狀態(tài)執(zhí)行灯抛,比如來電話了、鎖屏等音瓷。
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"程序進不活躍狀態(tài)");
}
//4.一般程序進入后臺对嚼,就會進入非活躍狀態(tài)呻此,但如果你的程序支持后臺擂找,程序在后臺也保持活躍狀態(tài)
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"程序進入后臺");
}
//5.程序進入前臺
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"程序進入前臺");
}
//2.當應用程序進入活躍狀態(tài)執(zhí)行
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"程序變成活躍狀態(tài)");
}
//6.當程序將要退出是被調用摆霉,通常是用來保存數(shù)據和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"程序退出");
}
@end
三徘溢、UIWindow
1撩扒、在iOS中扬卷,使用窗口與試圖在屏幕上顯示應用程序的內容扩然,窗口本身不具有任何可見的內容掸犬,但他對于應用程序的試圖提供一個基本的容器珊楼,試圖定義你想要的一些內容通殃,例如:圖像、文本亥曹、表格等等
2邓了、程序中每個時刻只能有一個UIWindow是keyWindow,通常應用程序只有一個window
3恨诱、iOS程序啟動完畢后,會首先創(chuàng)建一個UIWindow
4骗炉、一個iOS程序之所以能顯示到屏幕上照宝,完全是因為它有UIWindow,也就是說沒有UIWindow,就看不見任何UI界面
5句葵、常用方法
1)讓當前UIWindow變成keyWindow(主窗口)
- (void)makeKeyWindow;
2)讓主窗口顯示出來
- (void)makeKeyAndVisible;
6厕鹃、練習
自己創(chuàng)建一個window作為主窗口
四、程序的完整啟動過程
1乍丈、main函數(shù)
2剂碴、UIApplicationMain
1)創(chuàng)建UIApplication對象
2)創(chuàng)建UIApplication的delegate對象
3、delegate對象開始處理(監(jiān)聽)系統(tǒng)事件
1)程序啟動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法
2)在application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow
3)創(chuàng)建和設置UIWindow的rootViewController
4)顯示窗口
五轻专、手機屏幕的幾個概念
1忆矛、UIScreen
可以充當iOS物理屏幕的替代者,
[UIScreen mainScreen] bounds] 能夠獲取屏幕大小
2请垛、屏幕尺寸
指具體的屏幕物理長度催训,以屏幕的對角線的長度作為試試
3、像素
圖像由一個個點組成宗收,這個點叫做像素
4漫拭、屏幕分辨率
指屏幕屏幕上總共的物理像素點
5、屏幕尺寸
設備 屏幕尺寸 分辨率(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*134
6 4.7 375*667 @2x 750*1334
6P 5.5 414*736 @3x 1242*2208
pt: 用于計算屏幕上的坐標
六混稽、iOS坐標系統(tǒng)
1采驻、iPhone的試圖坐標系是以左上角為原點
2、每一個view的frame所使用的坐標系以它的父試圖的左上角為原點
3匈勋、試圖結構和相關函數(shù)
//試圖顯示的位置
CGPoint point = CGPointMake(x,y)
//試圖顯示的大小
CGSize size = CGSizeMake(width,height)
//試圖顯示的位置和大小
CGRect rect = CGRectMake(x,y,width,height);
4礼旅、frame/Bounds/center
frame: 包含試圖的位置和大小
Bounds:包含試圖的大小,位置默認是(0颓影,0)
center:包含試圖中心點所在的位置