UIWindow

简介:

UIWindow是一种特殊的UiView,通常一个Application中只会有一个UIWindow。

ios程序启动后,创建的第一个视图控件就是UIWindow,【先创建该view的控制器】接着创建控制器的view,最后将控制器的view添加到UIWindow上。控制器的view就显示在屏幕上了

一个ios程序之所以能显示到屏幕上,完全是因为他有UIWindow,即:没有UIWindow,就看不见任何UI界面

创建

1,一个空工程中UIWindow的创建:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

 //创建UIWindow

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]bounds]];

//设置UIWindow的颜色

self.window.backgroundColor = [UIColor whiteColor];

//设置为主窗口并显示出来

[self.window makeKeyAndVisible];

return YES;

}

2,在storyBoard中,UIWindow的创建

启动程序,先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application,创建代理,并且把代理设置给application(看项目配置文件info.plist里面的storyboard的name,根据这个name找到对应的storyboard),开启一个事件循环,当程序加载完毕,他会调用代理的didFinishLaunchingWithOptions:方法。在调用didFinishLaunchingWithOptions:方法之前,会加载storyboard,在加载的时候创建一个window,接下来会创建箭头所指向的控制器,把该控制器设置为UIWindow的根控制器,接下来再将window显示出来,即看到了运行后显示的界面。

获取UIWindow

1,主窗口和次窗口

【self.window makekeyandvisible】让窗口成为主窗口,并且显示出来。有这个方法,才能把信息显示到屏幕上。

因为Window有makekeyandvisible这个方法,可以让这个Window凭空的显示出来,而其他的view没有这个方法,所以它只能依赖于Window,Window显示出来后,view才依附在Window上显示出来。

【self.window make keywindow】//让uiwindow成为主窗口,但不显示。

2,获取UIWindow

(1)[UIApplication sharedApplication].windows  在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象(平时输入文字弹出的键盘,就处在一个新的UIWindow中)

(2)[UIApplication sharedApplication].keyWindow(获取应用程序的主窗口)用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。

注意:如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow

(3)view.window获得某个UIView所在的UIWindow

你可能感兴趣的:(UIWindow)