大前提:建立一个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:包含试图中心点所在的位置