博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多控制器之UIWindow
阅读量:6657 次
发布时间:2019-06-25

本文共 1385 字,大约阅读时间需要 4 分钟。

 

UIWindow

简介

  • UIWindow是一种特殊的UIView,通常一个app中至少有一个UIWindow
  • 程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上

创建和相关属性

  • 应用程序的启动原理中,第四步中如果有Main

    Info.plist文件,判断有没有Main,如果有,会去加载Main.storyBoard1.创建一个窗口UIWindow2.帮你创建Main.storyBoard当中箭头指向的控制器,它会把控制器设为窗口的根控制器,  并且,把控制器的View添加到窗口中3.显示窗口
  • 如果没有指定的Main的话,就需要手动的去创建窗口

    - 1.创建窗口- 2.设置窗口的根控制器- 3.显示窗口- 4.注意:从ios9之后,如果一个应用程序有多个窗口时,控制器就把状态栏给隐藏,解决办法:把状态栏交给应用程序管理
    // 1.创建窗口self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];// 2.设置窗口的根控制器UIViewController *vc = [[UIViewController alloc] init];vc.view.backgroundColor = [UIColor yellowColor];self.window.rootViewController = vc;// 3.显示窗口[self.window makeKeyAndVisible];

    注:[self.window makeKeyAndVisible]的底层实现:

    1.让窗口成为显示状态窗口默认是隐藏的.hidden = yes;底层做的事件就是:self.window.hidden = NO;2.把控制器的view添加到窗口上面[self.window addSubView:rootVC.view]; // rootVC根控制器3.把当前窗口设置成应用程序的主窗口application.keyWindow 获得应用程序的主窗口
  • 添加键盘(ios中键盘和状态栏都是窗口)

    // 创建一个UITextField,用来点击启动键盘UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];// 让UITextField成为第一响应者[tf becomeFirstResponder];// 控制器添加UITextField[vc.view addSubview:tf]; // vc为当前根控制器
  • UIWindow中的层级

    设置window的层级.UIWindowLevelNormal它是⼀一个CGFloat类型.self.window.windowLevel = UIWindowLevelNormalUIWindowLevelNormal < UIWindowLevelStatusBar < UIWindowLevelAlert

转载于:https://www.cnblogs.com/LongLJ/p/5008425.html

你可能感兴趣的文章
IOS UTI统一类型标识符:判断文件类型通过后缀
查看>>
Python之面向对象
查看>>
DotNet(C#)自定义运行时窗体设计器Runtime FormDesigner(转载)
查看>>
SQL Server数据库中批量导入数据
查看>>
次短路问题总结
查看>>
swing时钟
查看>>
Linux下Tomcat日志分割
查看>>
GCC参数详解
查看>>
datagirdview自动跳一行选择显示,界面看板
查看>>
程序设计实习 02 第i位替换
查看>>
python基本数据类型
查看>>
服务器端车牌识别搭建
查看>>
修改卷组属性
查看>>
[NOIp]二叉树的指针实现
查看>>
git 已经commit 没有 poll / upload 回退
查看>>
in 笔试题目 前端总结 abc类地址 转载
查看>>
系统崩溃分析
查看>>
shiro学习笔记1
查看>>
南浮的IT民工
查看>>
linq 基本用法
查看>>