首页 > 代码库 > UIWindow
UIWindow
UIWindow
UIWindow —> UIView
一、常用方法
1.- (void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口)
2.- (void)makeKeyAndVisible;
让当前UIWindow变成keyWindow,并显示出来
1.- (void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口)
2.- (void)makeKeyAndVisible;
让当前UIWindow变成keyWindow,并显示出来
注意:
1.makeKeyAndVisible就意味着,让window成为主窗口,并且可见。
2.窗口可以设置很多个,但是UIWindow有且只有一个主窗口。
3.[UIApplication sharedApplication].keyWindow
用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow,主要针对IOS6。
用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow,主要针对IOS6。
4.[UIApplication sharedApplication].windows
打印出屏幕上有多少window。
注意:
打印出屏幕上有多少window。
注意:
平时输入文字弹出的键盘,就处在一个新的UIWindow中,拿到键盘所在的window就可以修改键盘的按钮。
UIWindow只有一个主窗口,UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow,控制器不具备主动显示的功能,只有UIWindow才能显示到屏幕上,控制器要依赖UIWindow。
/**
* 程序启动完毕就会调用一次
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 1.创建window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 2.设置window的背景色
self.window.backgroundColor = [UIColor whiteColor];
// 3.显示window
[self.window makeKeyAndVisible];
return YES;
}
* 程序启动完毕就会调用一次
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 1.创建window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 2.设置window的背景色
self.window.backgroundColor = [UIColor whiteColor];
// 3.显示window
[self.window makeKeyAndVisible];
return YES;
}
注意:
不推荐下面这种写法,原因是,
1.MjOneViewController是一个局部变量方法调用完之后局部变量释放,但是控制器的View还在UIWindow上,这样会出现野指针错误。
2.旋转事件也会有影响,[self.window addSubview:one.view];这种方法,相当于一个普通的View添加到UIWindow上,UIApplication并不知道根控制器。
MjOneViewController *one = [[MjOneViewController alloc] init];
[self.window addSubview:one.view];
[self.window addSubview:one.view];
3.在创建window的时候,要注意。
/**
* 程序启动完毕就会调用一次
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 1.创建window
UIWindow *window= [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 2.设置window的背景色
window .backgroundColor = [UIColor whiteColor];
// 3.显示window
[window makeKeyAndVisible];
return YES;
}
* 程序启动完毕就会调用一次
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 1.创建window
UIWindow *window= [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 2.设置window的背景色
window .backgroundColor = [UIColor whiteColor];
// 3.显示window
[window makeKeyAndVisible];
return YES;
}
这时候,window是不能显示到窗口上的,因为这时候的window是哥局部变量,当程序启动完成之后,就会被销毁。
因此要加上,self.window = window。window是强引用的,防止window在创建完毕就被销毁。
4.一个窗口只有一个控制器。
self.window.rootViewController= [[UIViewControlleralloc]init];
UIWindow
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。