UIWindow

作者: 纳木错_grace | 来源:发表于2016-06-30 22:12 被阅读101次

    简介:

    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

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