美文网首页
iOS—UIWindow与UIView

iOS—UIWindow与UIView

作者: ysweiwei | 来源:发表于2017-08-03 19:10 被阅读0次

    一、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常用属性

    6、添加视图

    7、应用程序的启动流程

    main函数:

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

    #import <UIKit/UIKit.h>
    #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

          本文链接:https://www.haomeiwen.com/subject/iozplxtx.html