大前提:建立一个Xcode -> 点击第二个 -> iOS -> Applaction -> Single View Application下的一个应用程序
一、main.m 里面的
1、main函数,程序唯一的入口 2、UIApplicationMain函数函数作用 1)创建一个应用程序UIApplication对象,他是应用程序的象征,一个UIApplication对象就代表一个应用程序 2)指定谁管理应用程序的生命周期 3)建立一个事件循环来捕捉处理用户的行为 3、永远不用尝试改变main.m中的内容
二、程序的生命周期
#import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate #pragma mark 系统自动生成一个窗体 //1.当Applaction对象被实例化后,程序启动调用这个方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. NSLog(@"输出系统自己创建的window=%@",self.window); #pragma mark 手动创建一个UIwindow对象 //1).创建一个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和控制共同协作起来显示界面 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.当应用程序将要进入非活跃状态执行,比如来电话了、锁屏等。 - (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"程序进不活跃状态"); } //4.一般程序进入后台,就会进入非活跃状态,但如果你的程序支持后台,程序在后台也保持活跃状态 - (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"程序进入后台"); } //5.程序进入前台 - (void)applicationWillEnterForeground:(UIApplication *)application { NSLog(@"程序进入前台"); } //2.当应用程序进入活跃状态执行 - (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"程序变成活跃状态"); } //6.当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作 - (void)applicationWillTerminate:(UIApplication *)application { NSLog(@"程序退出"); } @end
三、UIWindow
1、在iOS中,使用窗口与试图在屏幕上显示应用程序的内容,窗口本身不具有任何可见的内容,但他对于应用程序的试图提供一个基本的容器,试图定义你想要的一些内容,例如:图像、文本、表格等等 2、程序中每个时刻只能有一个UIWindow是keyWindow,通常应用程序只有一个window 3、iOS程序启动完毕后,会首先创建一个UIWindow 4、一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow,也就是说没有UIWindow,就看不见任何UI界面 5、常用方法 1)让当前UIWindow变成keyWindow(主窗口) - (void)makeKeyWindow; 2)让主窗口显示出来 - (void)makeKeyAndVisible; 6、练习 自己创建一个window作为主窗口
四、程序的完整启动过程
1、main函数 2、UIApplicationMain 1)创建UIApplication对象 2)创建UIApplication的delegate对象 3、delegate对象开始处理(监听)系统事件 1)程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法 2)在application:didFinishLaunchingWithOptions:中创建UIWindow 3)创建和设置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坐标系统
1、iPhone的试图坐标系是以左上角为原点 2、每一个view的frame所使用的坐标系以它的父试图的左上角为原点 3、试图结构和相关函数 //试图显示的位置 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:包含试图中心点所在的位置