UIWindow

来源:互联网 发布:淘宝怎么提前收款 编辑:程序博客网 时间:2024/06/06 18:55

UIWindow

  • UIWindow
      • app中的其他常见窗口
      • UIWindow的层级
        • 设置UIWindow的层级
        • 层级关系
      • UIWindow加载控制器
        • 从StoryBoard中加载控制器的两种方式
      • 通过xib加载控制器的view

UIWindow是一种特殊的UIView,通常在一个app中至少有一个UIWindow

程序启动完毕后创建的第一个视图控件就是UIWindow,然后创建控制器的view

最后将控制器的view添加到UIWindow上,于是view就显示在屏幕上,

一个app之所以能显示出来是因为有UIWindow;

加载info.plist,若指定main、则加载storyboard

  • 创建一个窗口
  • 加载MainStoryBoard,初始化一个控制器
  • 把初始化的控制器作为UIWindow的根控制器,让UIWindow显示

若没有指定main、则程序加载完毕,然后手动创建UIWindow(一般都是手动创建UIWindow)

// UIApplicationDelegate中有一个UIWindow属性,是强引用//初始化UIWindow,设置、尺寸self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];//初始化一个控制器UIViewController *vc = [[UIViewController alloc] init];vc.backgroundColor = [UIColor redColor];//为UIWindow设置根控制器(会把根控制器的view添加到窗口上)self.window.rootViewController = vc;//把窗口显示[self.window makeKeyAndVisible];
[self.window makeKeyAndVisible];// 1、让窗口成为显示状态/**窗口默认是隐藏的*/self.window.hidden = YES;// 2、让窗口成为app的主窗口//获得app的主窗口  app.keyWindow

app中的其他常见窗口

  • 状态栏
  • 键盘

UIWindow的层级

设置UIWindow的层级

//是一个CGFloat类型self.window.windowLevel = UIWindowLevelNormal;

层级关系

UIWindowLevelNormal < UIWondowLevelStatusBar < UIWindowAlert

UIWindow加载控制器

从StoryBoard中加载控制器的两种方式

// 1、创建UIWindowself.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];// 2、找到MainStoryBoardUIStoryBoard *storyBoard = [UIStoryBoard storyBoardWithName:@"Main" bundle:nil];// 3.1、在MainStoryBoard中找到箭头指向的那个控制器UIViewController *vc = [storyBoard instantialViewController];// 3.2、在MainStoryBoard中指定标识的控制器UIViewController *vc = [storyBoard instantialViewControllerWithIdentifier:@"XViewController"];// 4、设置根控制器self.window.rootViewController = vc;// 5、显示窗口[self.window makeKeyAndVisible];

通过xib加载控制器的view

  • 新建xib

  • 把xib的file’s owner设置为控制器

  • 往xib中拖入一个view

  • 把view与file’s owner连线(只有设置了file’s owner才能拖线)

    // initWithNibName 要加载的xib的名称XViewController *vc = [[XViewController alloc] initWithNibName:@"VC" bundle:nil];

原创粉丝点击