iOS—UIWindow与UIView

一、UIWindow
1、什么是UIWindow

管理和协调应用程序的显示。
UIWindow类是UIView的子类,可以看作是特殊的UIView(UIView之后介绍)。
一般应用程序只有一个UIWindow对象。

二、UIWidow对象有两种方式创建:

1、自动创建UIWindow对象

先执行Main函数,执行UIApplicationMain()创建代理
看项目配置文件info.plist里面的StoryBoard的name
根据这个name找到对应的StoryBoard,加载StoryBoard
在加载的时候创建一个window。

2、代码创建UIWindow对象

// 创建UIWindow对象
// [UIScreen mainScreen].bounds是屏幕大小
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    // 给window设置背景颜色(白色)
    self.window.backgroundColor = [UIColor whiteColor];
    // 使window显示
    [self.window makeKeyAndVisible];
// 创建一个视图控制器
    UIViewController *VC = [[UIViewController alloc] init];
    // 给Window指定根视图控制器
    self.window.rootViewController = VC;

二、UIView
1、什么是UIView

UIView表示屏幕上的一块矩形区域。
它在App中占有绝对重要的地位。
因为iOS中几乎所有可视化控件都是UIView的子类。
负责渲染区域的内容
并且响应该区域内发生的触摸事件。
2、UIView功能
管理矩形区域里的内容
处理矩形区域中的事件
子视图的管理
实现UIView动画
UIView作为父类,子类也具有这些功能

3、创建UIView

// 开辟空间创建UIView对象
   // 设置frame确定UIView对象的位置以及大小
   UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
   // 设置UIView对象的属性:设置背景颜色
   view.backgroundColor = [UIColor redColor];
   // 将创建好的UIView对象添加到Window上显示
   [self.window addSubview:view];

4、frame

frame是UIView的重要属性,是我们用于视图布局的关键。
它决定了视图的大小和位置。
frame是CGRect类型。
frame是基于它父视图的坐标系而言的。

5、UIView常用属性

iOS—UIWindow与UIView_第1张图片

6、添加视图

iOS—UIWindow与UIView_第2张图片

7、应用程序的启动流程

iOS—UIWindow与UIView_第3张图片

main函数:

任何一个程序,无论是基于Mac OS还是iOS,程序都是从main.m文件的main函数开始执行的。

#import 
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

UIApplicationMain

UIApplicationMain在程序入口函数main函数中调用,主要实现了3个功能:
1.创建应用程序(UIApplication)实例
2.创建应用程序代理(AppDelegate)实例
3.建立事件循环(runloop:死循环,不断检测程序运行状态,是否被触摸、晃动等)

UIApplicationMain参数

nt UIApplicationMain (
   int argc,
   char *argv[],
   NSString *principalClassName,
   NSString *delegateClassName
);
1、principalClassName:应用程序对象的类名(UIApplication或其子类)
2、delegateClassName:应用程序delegate的类名。(任何接受了UIApplicationDelegate的类)
UIApplicationMain根据上述两个类名创建应用程序实例、应用程序代理实例。然后建立事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触摸等等)

应用程序代理:

iOS—UIWindow与UIView_第4张图片

你可能感兴趣的:(iOS—UIWindow与UIView)